【问题标题】:What is a django middleware equivalent in ASP MVC?什么是 ASP MVC 中的 django 中间件等价物?
【发布时间】:2012-07-18 09:55:14
【问题描述】:

基本上,我想为每个请求注入一些数据到 ViewData/ViewBag 中。

【问题讨论】:

    标签: c# asp.net-mvc-3 django-middleware


    【解决方案1】:

    在 ASP.NET MVC 中,这将是一个 action filter。如果您想在全球范围内进行,您可以将其注册为global action filter。这样,它将应用于所有控制器操作,因此您无需单独装饰它们。

    所以你的过滤器可以这样定义:

    public class GlobalViewBagInjectorActionFilter : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            filterContext.Controller.ViewBag.Foo = "bar";
        }
    }
    

    并在Global.asaxRegisterGlobalFilters 方法中注册:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new GlobalViewBagInjectorActionFilter());
    }
    

    现在您可以在所有视图中使用ViewBag.Foo 属性。

    但在大多数情况下,Child ActionsViewBag 更好,因为它们允许您传递强类型的视图模型,而不是依赖于弱类型的 ViewBag 和一些魔术字符串。

    【讨论】:

    • 我见过子动作,但让我失望的是我仍然需要在路由中为其定义 url。这对我来说没有意义。
    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多