在MVC5中自动调用动作筛选器

本文关键字:筛选 调用 MVC5 | 更新日期: 2023-09-27 18:24:35

我正在尝试为nocommerce开发一个插件,并尝试在操作过滤器中捕获页面的模型(提交后),以便对模型属性进行一些更改。

    public ActionResult Index()
    {
        Data dt = new Data();
        dt.id = 54;
        dt.name = "something";
        return View(dt);
    }

这就是fitler:

public class ModelChangerAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            Data dt = new Data();
            dt = (Data) filterContext.Controller.ViewData.Model;
            dt.id++;
            dt.name += " someotherthing";
            filterContext.HttpContext.Items["dt"] = dt;
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //throw new NotImplementedException();
        }
    }

但为了运行操作过滤器,我需要在控制器中的方法之前指定它。我对此并不失望。

不想这样做:

        [ModelChangerAttribute]
        public ActionResult Index()
        {
            ...

那么,是否可以在每次运行控制器方法时自动调用筛选器

请在此处提供一个示例。

在MVC5中自动调用动作筛选器

在App_Start/FilterConfig.cs:中

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

附加信息:您应该在Application_Start()中的global.asax中调用此:

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);