我想动态设置一些属性,例如RootCSSUrl
在视图包上并在_Layout.cshtml
页面上阅读它们。
到目前为止,我尝试通过使用“BaseController”(以及所有控制器继承自它)并将构造函数上的此类属性设置为ViewBag.RootCSSUrl = isDevelopment ? "blob.mysite.com":"blob.mysite.com";
.
问题是在 _layout 渲染时,这个值总是为空...
我究竟做错了什么?
我设法通过创建一个全局动作过滤器来做到这一点,如https://damienbod.com/2015/09/15/asp-net-5-action-filters/
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());
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句