使用ViewBag

时间:2016-03-24 14:57:13

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

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

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

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

ViewBag.Title在视图中设置。

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

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

作为旁注,例外仅在页面的初始加载时发生。刷新之后,不会发生异常,这表明视图编译是我们遇到问题的地方。

enter image description here

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

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

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

<h2>Index</h2>

更新2:我已将项目从MVC 4升级到5.3.2。例外情况仍然存在。

1 个答案:

答案 0 :(得分:2)

这些异常是由正在使用的基础动态对象引起的。 .NET框架总是抛出这些异常。

VS中的

解决方案:转到菜单工具/选项,选择左侧的顶级项Debugging,然后选择 [v]启用我的代码。这可以避免VS在框架深处抛出异常时无用地破坏。