我有一个非常简单的ViewBag.Title。像这样:
@{
ViewBag.Title = "My Title";
ViewBag.MiniTitle = "Sub - Title";
}
上的_Layout.cshtml正在解析哪个
<title>@ViewBag.Title</title>
但是,我得到了这个例外:
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"
我一直在寻找,但我找不到有关它的更多信息。这个人面临的问题基本上是同一个问题:http://forums.asp.net/t/1715878.aspx?MVC3+Razor+Viewbag+Title+RuntimeBinderException
我的问题也和发布的最后一个人一样。这对我没有任何问题,项目工作正常,我的标题也是如此。但是,我不喜欢因为它们很昂贵而引发异常这一事实。
有谁知道如何解决这个问题?谢谢!
答案 0 :(得分:3)
可能是您在声明它之前使用@ ViewBag.Title,例如,如果您的布局文件有
<title>@ViewBag.Title</title>
但您在局部视图或类似的
中定义标题LATER@{
ViewBag.Title = "My Title";
ViewBag.MiniTitle = "Sub - Title";
}
尝试在控制器操作中设置ViewBag.Title,以便在调用View()之前可用
答案 1 :(得分:1)
我尝试了这个,它对我有用:
@(ViewBag.GetType().GetProperty("Title") == null ? "" : ViewBag.Title)
这是一个古老的问题,但也许对某人有帮助。
问候。
答案 2 :(得分:0)
您的DLL已损坏。我通过从同事那里复制Microsoft.CSharp.dll来修复它。 位置为C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.7(根据您的版本调整的最新文件夹)
答案 3 :(得分:0)
我遇到了类似的问题。我可以解决的唯一方法是,例如,将ViewBag.Title更改为ViewData [“ Title”]。从技术上讲,ViewBag和ViewData是同一件事,并且ViewData使用起来更快,但是您必须键入强制转换...但是,如果它还是一个字符串,那么它似乎可以在没有强制转换的情况下正常工作,因为它将自动调用ToString。
答案 4 :(得分:-1)
我试图在没有运气的情况下重新生成这个问题。
您已在母版页中设置了ViewBag.Title,并且此错误似乎来自另一个您未定义ViewBage.Title的视图 属性。
因为ViewBag.Title是Master页面的局部变量,所以其他View不会得到它并抛出所述错误。
现在,尝试在标记中使用ViewBag.MiniTitle。 你还得到同样的错误吗?
请分享。