【发布时间】:2015-12-22 00:12:28
【问题描述】:
我正在使用 MVC 5 并希望在我的 MVC 控制器中覆盖以下 View 方法
protected internal virtual ViewResult View(string viewName, string masterName, object model)
我可以有许多不同的布局视图,因此希望在运行时获取当前布局名称并将其传递给覆盖的视图方法。如何在控制器中获取运行时的布局名称?
编辑 我认为我不需要为我需要做的事情创建自定义视图引擎。我基本上只想跨多个方法和控制器设置一个 ViewBag 值,不想重复自己。我在运行时有 viewName 和 model 值,只是没有布局名称作为 masterName 参数传递
protected override ViewResult View(string viewName, string masterName, object model)
{
ViewBag.SomeValue = GetValue();
return base.View(viewName, masterName, model);
}
【问题讨论】:
-
我认为您正在谈论创建自定义 ViewEngine。看一些例子:codeproject.com/Articles/294297/…weblogs.asp.net/imranbaloch/…
-
@MichaelLake 我认为我不需要创建自定义视图,我认为这对我想要的东西来说太过分了,我在上面进行了编辑以显示我想要实现的目标。
-
@Gene,如果用 View 方法做我正在尝试的事情不容易,那么我会看看 FilterAttribute。我只是认为获取视图的布局名称会更直接,但我可能错了。
-
你最终想要完成什么?这可能很难,因为不应该这样做。
标签: c# asp.net-mvc asp.net-mvc-5