[英]Asp.Net MVC 4 - ActionFilterAttribute Usage
I writted this code (CustomHandle) for application log. 我为应用程序日志编写了此代码(CustomHandle)。 But, i don't want to run this code on some actions. 但是,我不想在某些操作上运行此代码。
CustomHandle.cs: CustomHandle.cs:
public class CustomHandle: ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
var controllerName = (string)filterContext.RouteData.Values["controller"];
var actionName = (string)filterContext.RouteData.Values["action"];
string FormVeri = "";
string QueryVeri = "";
foreach (var fName in filterContext.HttpContext.Request.Form)
{
FormVeri += fName + "= " + filterContext.HttpContext.Request.Form[fName.ToString()].ToString() + "& ";
}
foreach (var fQuery in filterContext.HttpContext.Request.QueryString)
{
QueryVeri += fQuery + "= " + filterContext.HttpContext.Request.QueryString[fQuery.ToString()] + "& ";
}
base.OnResultExecuted(filterContext);
}
}
FilterConfig.cs: FilterConfig.cs:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomHandle());
}
}
HomeController.cs: HomeController.cs:
public ActionResult Index()
{
return View();
}
public ActionResult Login()
{
return View();
}
CustomHandle works on Index and Login . CustomHandle适用于Index和Login 。 But, CustomHandle is i don't want run on Login ActionResult . 但是, CustomHandle是我不希望在Login ActionResult上运行。
Thanks, 谢谢,
Best Regards. 最好的祝福。
In MVC 5... instead of adding the action filter in FilterConfig.cs 在MVC 5中...而不是在FilterConfig.cs中添加动作过滤器
Example 例
[CustomHandle]
public class AnyController : Controller
{
public ActionResult Index() // has [CustomHandle] attribute
{
}
[OverrideActionFilter]
public ActionResult Login() // ignores the [CustomHandle] attribute
{
}
}
When a filter is injected into a controller class, all its actions are also injected. 当将过滤器注入到控制器类中时,其所有动作也会被注入。 If you would like to apply the filter only for a set of actions, you would have to inject [CustomActionFilter] to each one of them: 如果只想对一组操作应用过滤器,则必须将[CustomActionFilter]注入到每个操作中:
[CustomHandle]
public ActionResult Index()
{
...
}
public ActionResult Login()
{
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.