【问题标题】:RuntimeBinderException when using ViewBag使用 ViewBag 时出现 RuntimeBinderException
【发布时间】:2016-03-24 14:57:13
【问题描述】:

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

例如,以下代码导致异常:

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

ViewBag.Title 在视图中设置。

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

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

附带说明,异常仅在页面初始加载时发生。刷新后没有出现异常,说明视图编译是我们遇到问题的地方。

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

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

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

<h2>Index</h2>

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

【问题讨论】:

  • 为什么要在视图中设置 ViewBag.Title 而不是直接填写呢?
  • 请分享您在控制器和视图中的 ViewBag 中设置值的代码

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


【解决方案1】:

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

解决方法:在VS中进入菜单Tools/Options,选择左侧的顶级项Debugging,然后选择[v] Enable Just My Code。这可以避免 VS 在框架内部抛出异常时毫无用处地中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多