C# Asp.Net MVC Core 2-在布局上使用ViewBag

C# Asp.Net MVC Core 2-在布局上使用ViewBag,c#,asp.net-mvc,asp.net-core-mvc,C#,Asp.net Mvc,Asp.net Core Mvc,我想在视图包上动态设置一些属性,例如RootCSSUrl,并在\u Layout.cshtml页面上读取它们 到目前为止,我试图通过使用“BaseController”(所有控制器都从中继承)并在构造函数上设置属性,如ViewBag.RootCSSUrl=isDevelopment?“blob.mysite.com”:“blob.mysite.com” 问题是在_布局渲染上,此值始终为空 我做错了什么?我创建了一个全局操作筛选器,如中所示 actionFilter代码非常简单: public c

我想在视图包上动态设置一些属性,例如
RootCSSUrl
,并在
\u Layout.cshtml
页面上读取它们

到目前为止,我试图通过使用“BaseController”(所有控制器都从中继承)并在构造函数上设置属性,如
ViewBag.RootCSSUrl=isDevelopment?“blob.mysite.com”:“blob.mysite.com”

问题是在_布局渲染上,此值始终为空


我做错了什么?

我创建了一个全局操作筛选器,如中所示

actionFilter代码非常简单:

public class CommonViewBagInitializerActionFilter : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext context)
    {
#if DEBUG
        ((BaseController)context.Controller).ViewBag.RootBlobURL = "";
#else
        ((Controller)context.Controller).ViewBag.RootBlobURL = "https://blob.mysite.com";
#endif
    }
}
过滤器的注册为:

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(config =>
        {
            config.Filters.Add(new CommonViewBagInitializerActionFilter());
        });
    }

看不到您的代码就无法分辨。请在您的答案中包含该链接中的重要部分,或显示您最终得到的操作筛选器代码。@poke done!检查是否清楚。。。如果没有,我如何改进它?我看不出在代码中需要BaseController强制转换。控制器有权访问ViewBag。按照现在的方式,您的过滤器将仅在从BaseController继承的控制器上工作。否则你会得到一个例外…@Marko-tks!我修好了!