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!我修好了!