我ViewBag
在MVC 3中看到了.ViewData
与MVC 2有什么不同?
我们已将我们的应用程序转换为 ASP.NET Core,但我在正确填充 ViewBag 时遇到了问题。我们有以下基本控制器
public abstract class ControllerBase : Controller
{
public ControllerBase()
{
ViewBag.Title = "MySite";
}
...// lots of other stuff here also
}
Run Code Online (Sandbox Code Playgroud)
我们所有的其他控制器都继承自ControllerBase
但是当我们到达视图并使用以下内容时
@{
ViewBag.Title = ViewBag.Title + " - " + Model.PageTitle;
}
Run Code Online (Sandbox Code Playgroud)
但在视图中ViewBag.Title
是空的。它不会导致错误,但我们最终只得到“ - MyPage”而不是“MySite - MyPage”作为浏览器标题。
这一切在以前版本的 .net 中都可以正常工作,只是现在在 ASP.NET Core 中无法正常工作。当我逐步调试调试器时,我看到ControllerBase
正在调用构造函数,但 ViewBag 数据没有持久化。
这给我留下了两个问题:
编辑:我在基本控制器的第一行设置了一个调试器停止,并将ViewBag.Title
设置作为我的观察变量逐步完成。当我逐步完成时,我可以看到值被设置,然后我从基本控制器移动到特定动作控制器的构造函数。当我逐步执行该构造函数时,ViewBag.Title
仍然设置。只要我打的第一线Index()
方法ViewBag.Title
轮流null
。
Edit2:这是一个简单的 foo 项目,说明了这个问题 https://github.com/nurdyguy/ViewBagIssue