在一个简单的Viewbag.Title中,获取RuntimeBinderException

Joh*_*nC1 13 c# asp.net-mvc razor viewbag

我有一个非常简单的ViewBag.Title.像这样:

@{
    ViewBag.Title = "My Title";
    ViewBag.MiniTitle = "Sub - Title";
}
Run Code Online (Sandbox Code Playgroud)

哪个是在_Layout.cshtml上解析的

<title>@ViewBag.Title</title>
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个例外:

Thrown: "'System.Dynamic.DynamicObject' does not contain a definition for 'Title'"
(Microsoft.CSharp.RuntimeBinder.RuntimeBinderException) 
Exception Message = "'System.Dynamic.DynamicObject' does not contain a definition for 
'Title'", Exception Type = "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"
Run Code Online (Sandbox Code Playgroud)

我一直在搜索,我找不到有关它的更多信息.这个人面临的问题基本上是同一个问题:http://forums.asp.net/t/1715878.aspx?MVC3 + Razor + Viewbag +Title + RuntimeBinderException

我的问题也和发布的最后一个人一样.这对我没有任何问题,项目工作正常,我的标题也是如此.但是,我不喜欢因为它们很昂贵而引发异常的事实.

有谁知道我该如何解决这个问题?谢谢!

Mea*_*een 15

使用 VisualStudio 2022 中的热重载功能可能会导致此错误看似随机发生,但代码中没有任何问题。

修复方法是停止运行/调试、构建并重新启动。

我目前使用的是 VS2022 版本 17.1.6。

  • 我确信 VS 2022 不是 2013 年提出问题时的问题,但你的提示对我帮助很大:-D (3认同)

Dip*_*hta -1

我试图重新生成上述问题,但没有运气。

您已在母版页中设置了 ViewBag.Title,并且此错误似乎是从您未定义 ViewBage.Title 属性的另一个视图中发生的。

由于ViewBag.Title是母版页的局部变量,其他View将无法获取它并抛出所述错误。

现在,尝试在标签中使用 ViewBag.MiniTitle。您仍然遇到同样的错误吗?

请分享。