@if (HttpContext.Current.IsDebuggingEnabled)
{
}
Lớp
public class UrlInformation
{
[XmlElement(ElementName = "ActionName")]
public string ActionName { get; set; }
[XmlElement(ElementName = "ControllerName")]
public string ControllerName { get; set; }
[XmlElement(ElementName = "AreaName")]
public string AreaName { get; set; }
}
Class cho XML Serializaion
[XmlTypeAttribute(AnonymousType = true)]
public class clsUrlInformation
{
[XmlElement("Files")]
public List<UrlInformation> Url { get; set; }
public clsUrlInformation()
{
Url = new List<UrlInformation>();
}
}
mẫu XML (Xác định tên phương pháp hành động debug/controller/khu vực của bạn ở đây)
<?xml version="1.0" ?>
<Url>
<Files>
<AreaName></AreaName>
<ControllerName>Home</ControllerName>
<ActionName>Index</ActionName>
</Files>
<Files>
<AreaName></AreaName>
<ControllerName></ControllerName>
<ActionName></ActionName>
</Files>
</Url>
Filter Action
public class MyActionClass : ActionFilterAttribute
{
public override void OnActionExecuting(
ActionExecutingContext filterContext)
{
Hãy nói rằng bạn có XML. XML chứa thông tin về Diện tích, phương pháp hành động Tên và điều khiển Tên
var xml =
@"<?xml version=""1.0"" ?>
<Url>
<Files>
<AreaName></AreaName>
<ControllerName>Home</ControllerName>
<ActionName>Index</ActionName>
</Files>
<Files>
<AreaName></AreaName>
<ControllerName></ControllerName>
<ActionName></ActionName>
</Files>
</Url>";
Làm serialization XML và chuyển đổi XML vào danh sách của Class.
var serializer = new XmlSerializer(typeof(clsUrlInformation),
new XmlRootAttribute("Url"));
using (var stringReader = new StringReader(xml))
using (var reader = XmlReader.Create(stringReader))
{
clsUrlInformation result =
(clsUrlInformation)serializer.Deserialize(reader);
RouteData Route =
filterContext.Controller.ControllerContext.RouteData;
String controller = Convert.ToString(Route.Values["controller"]);
String action = Convert.ToString(Route.Values["action"]);
String area = Convert.ToString(Route.DataTokens["area"]);
So sánh các hành động hiện tại với xml để hiển thị 404
foreach (var item in result.Url)
{
if (HttpContext.Current.IsDebuggingEnabled &&
controller == item.ControllerName &&
action == item.ActionName &&
area == item.AreaName)
{
filterContext.Result = new HttpNotFoundResult();
return;
}
}
}
base.OnActionExecuting(filterContext);
}
}
@CristiDiaconescu: Khi đề cập đến các url debug trong file XML sẽ được linh hoạt hơn. TẠI SAO? Bởi vì, sau này bạn có thể sửa đổi trong XML của bạn để tăng/giảm/cập nhật thông tin url mà không làm thay đổi mã và không triển khai dll. Phải không?
Hai phương pháp đầu tiên của bạn trông giống như mã Razor, tại thời điểm này có thể đã quá muộn - Tôi muốn có URL gỡ lỗi (danh sách)) 'có thể bị vô hiệu hóa - tức là đánh chúng sẽ trả về 404, không phải trang ustom (trống?). Tuy nhiên, +1 cho HttpContext.Current.IsDebuggingEnabled –
@CristiDiaconescu: ** [Thay vì đề cập đến các tuyến đường trong tệp mã, bạn có thể đề cập đến trong tệp XML như đã đề cập trong bài đăng này] (http://stackoverflow.com/a/ 18362259/2015869) ** –
@CristiDiaconescu: Đề cập đến các url gỡ lỗi trong tệp XML sẽ linh hoạt hơn. TẠI SAO? Bởi vì, sau này bạn có thể sửa đổi trong XML của bạn để tăng/giảm/cập nhật thông tin url mà không làm thay đổi mã và không triển khai dll. Phải không? –