c# - 使用 ViewBag 时出现 RuntimeBinderException

标签 c# asp.net-mvc asp.net-mvc-4 exception viewbag

对于 _Layout.cshtml 中使用的 Viewbag 项,我们会收到 RuntimeBinderException。我们在内存分析器中观察到这些异常。它们不是致命的(一切正常)但很烦人,我们想清除它们。

例如,下面的代码会引发异常:

<title>@ViewBag.Title</title>
...
@RenderBody()

ViewBag.Title 在 View 中设置。

此外,我们还有 ViewBag.WebAnalyticsParameters,它在 Controller 操作中设置并在 _Layout.cshtml 中使用。

当我们从 _Layout 代码中删除 ViewBag.Title 和 ViewBag.WebAnalyticsParameters 时,异常不会发生并被探查器应用程序捕获。

作为旁注,异常仅发生在页面的初始加载时。刷新后没有异常,说明 View 编译是我们遇到问题的地方。

enter image description here

更新 1:我创建了一个空的 MVC 4 应用程序并再次收到此错误。 你可以看到附加的图像。

此示例应用中的 View (主页/索引)包含以下代码:

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

更新 2:我已将项目从 MVC 4 升级到 5.3.2。异常仍然发生。

最佳答案

这些异常是由正在使用的底层动态对象引起的。 .NET 框架总是以某种方式抛出这些异常。

解决方案:在 VS 中转到菜单工具/选项,选择顶级项目 Debugging ,然后选择 [v] 启用仅我的代码。这避免了 VS 在框架深处抛出的异常上无用地中断。

关于c# - 使用 ViewBag 时出现 RuntimeBinderException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36203228/

相关文章:

c# - 在 Windows 应用商店应用程序中打印没有打印预览的文档

c# - 请求对象未拾取所有字符

javascript - 如何在 MVC 4 中包含基于 JavaScript 的插件?

c# - Ws-Federation 身份信息在 Web API 中不可用?

c# - 将组合框添加到 DataGridView header

c# - 我的登录从 VB.NET 到 C# 的转换问题

c# - 使用 asp.net 生成图表

asp.net - 从 DisplayFor 中删除 mailto anchor

c# - angularJS 单元测试

asp.net-mvc-3 - 很难获取有关在 Orchard View 中工作的权限的条件代码