C# 什么是ASP MVC中的django中间件?
基本上,我想为每个请求向ViewData/ViewBag中注入一些数据。在ASP.NET MVC中,这将是一个很好的解决方案。如果你想在全球范围内做这件事,你可以把它注册为。这样,它将应用于所有控制器动作,因此您不需要单独装饰它们 因此,您的过滤器可以这样定义:C# 什么是ASP MVC中的django中间件?,c#,asp.net-mvc-3,django-middleware,C#,Asp.net Mvc 3,Django Middleware,基本上,我想为每个请求向ViewData/ViewBag中注入一些数据。在ASP.NET MVC中,这将是一个很好的解决方案。如果你想在全球范围内做这件事,你可以把它注册为。这样,它将应用于所有控制器动作,因此您不需要单独装饰它们 因此,您的过滤器可以这样定义: public class GlobalViewBagInjectorActionFilter : ActionFilterAttribute { public override void OnActionExecuted(Act
public class GlobalViewBagInjectorActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.Controller.ViewBag.Foo = "bar";
}
}
并在您的Global.asax中的RegisterGlobalFilters
方法中注册:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new GlobalViewBagInjectorActionFilter());
}
现在,您可以在所有视图中使用ViewBag.Foo
属性
但是在大多数情况下,它是比ViewBag
更好的选择,因为它们允许您传递强类型的视图模型,而不是依赖于这个弱类型的ViewBag和一些神奇的字符串。我看到了子操作,但让我感到不安的是,我仍然需要在路由中为它定义url。这对我来说毫无意义。