在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()
{
...
那么,是否可以在每次运行控制器方法时自动调用筛选器
请在此处提供一个示例。
在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);