Trong ASP.NET MVC bạn có thể viết một custom global action filter.
UPDATE:
Theo yêu cầu trong phần ý kiến dưới đây là một ví dụ về bộ lọc như vậy có thể trông như thế nào như:
public class MyActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var fooCookie = filterContext.HttpContext.Request.Cookies["foo"];
// TODO: do something with the foo cookie
}
}
Nếu bạn muốn thực hiện ủy quyền dựa trên giá trị của cookie , sẽ chính xác hơn khi triển khai giao diện IAuthorizationFilter:
public class MyActionFilterAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
var fooCookie = filterContext.HttpContext.Request.Cookies["foo"];
if (fooCookie == null || fooCookie.Value != "foo bar")
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
}
Nếu bạn muốn lọc hành động này để chạy trên mỗi yêu cầu cho mỗi hành động điều khiển bạn có thể đăng ký nó như một bộ lọc hành động toàn cầu trong global.asax của bạn trong phương pháp RegisterGlobalFilters
:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyActionFilterAttribute());
}
Và nếu bạn cần điều này để chỉ thực hiện cho hành động hoặc điều khiển đặc biệt chỉ đơn giản là trang trí chúng với thuộc tính này:
[MyActionFilter]
public ActionResult SomeAction()
{
...
}
Nguồn
2012-03-01 06:54:24
có lẽ đây http://stackoverflow.com/questions/2650269/how-do-i-get-certain-code-to-execute-before- mỗi đơn điều khiển-hành động-trong-như – V4Vendetta
Bạn muốn đặt một ActionFilterAttribute trên bộ điều khiển –
Tôi sẽ als o nhìn vào những gì phương pháp đang làm và nếu nó vẫn còn cần thiết trong MVC, không có điểm chuyển một cái gì đó mà công nghệ mới làm cho lỗi thời. – TheRealTy