繁体   English   中英

在MVC5中自动调用动作过滤器

[英]Calling action filter automatically in MVC5

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

    public ActionResult Index()
    {
        Data dt = new Data();

        dt.id = 54;
        dt.name = "something";
        return View(dt);
    }

这是钳工:

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()
        {
            ...

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

请在此处提供示例。

在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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM