簡體   English   中英

Asp.Net MVC 4-ActionFilterAttribute用法

[英]Asp.Net MVC 4 - ActionFilterAttribute Usage

我為應用程序日志編寫了此代碼(CustomHandle)。 但是,我不想在某些操作上運行此代碼。

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:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new CustomHandle());
    }
}

HomeController.cs:

public ActionResult Index()
{
    return View();
}

public ActionResult Login()
{
    return View();
}


CustomHandle適用於IndexLogin 但是, CustomHandle是我不希望在Login ActionResult上運行。

謝謝,
最好的祝福。

在MVC 5中...而不是在FilterConfig.cs中添加動作過濾器

  • 將其添加到每個控制器(或基本控制器)中-所有操作都會受到影響。
  • 使用[OverrideActionFilter]刪除該過濾器以執行特定操作。

    [CustomHandle]
    public class AnyController : Controller
    {
        public ActionResult Index()      // has [CustomHandle] attribute
        {
        }

        [OverrideActionFilter]
        public ActionResult Login()      // ignores the [CustomHandle] attribute
        {
        }
    }

當將過濾器注入到控制器類中時,其所有動作也會被注入。 如果只想對一組操作應用過濾器,則必須將[CustomActionFilter]注入到每個操作中:

[CustomHandle]
public ActionResult Index()
{
  ...
}

public ActionResult Login()
{
  ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM