简体   繁体   English

Asp.Net MVC 4-ActionFilterAttribute用法

[英]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适用于IndexLogin 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中添加动作过滤器

  • add it to each Controller (or a base controller) - all actions will be affected. 将其添加到每个控制器(或基本控制器)中-所有操作都会受到影响。
  • use [OverrideActionFilter] to remove that filter for a specific action. 使用[OverrideActionFilter]删除该过滤器以执行特定操作。

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.

相关问题 ASP.NET MVC3 + ActionFilterAttribute +注入? - ASP.NET MVC3 + ActionFilterAttribute + Injection? ASP.NET MVC ActionFilterAttribute在模型绑定之前注入值 - ASP.NET MVC ActionFilterAttribute inject value before model binding ASP.NET MVC-在RegisterGlobalFilters()中使用ActionFilterAttribute时Response.Filter为null - ASP.NET MVC - Response.Filter is null when using ActionFilterAttribute in RegisterGlobalFilters() 实现FilterAttribute,IActionFilter和从asp.net mvc 3中的ActionFilterAttribute继承有什么区别? - What's the difference between implementing FilterAttribute, IActionFilter and inheriting from ActionFilterAttribute in asp.net mvc 3? dhtmlxscheduler与ASP.NET MVC5的用法 - dhtmlxscheduler usage with ASP.NET MVC5 RedirectToAction 在 asp.net mvc 中的用法 - RedirectToAction usage in asp.net mvc 在ActionFilterAttribute中读取Asp.Net核心响应主体 - Read Asp.Net Core Response body in ActionFilterAttribute 带ActionFilterAttribute扩展的Throttle ASP.NET Web Api - Throttle ASP.NET Web Api with ActionFilterAttribute extension 在ASP.NET MVC C#中Checkboxfor和Model的用法 - Usage of checkboxfor & model in asp.net mvc c# 什么是asp.net mvc网站的正常内存使用情况? - What is normal memory usage of an asp.net mvc website?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM