2016-03-24 19 views
2

_Layout.cshtmlで使用されるViewbag項目に対してRuntimeBinderExceptionが発生しています。これらの例外はメモリプロファイラで観察されます。彼らは致命的ではありません(すべて正常に動作します)が、迷惑です。ViewBag使用時のRuntimeBinderException

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

ViewBag.Titleを考慮して設定されている:

は、例えば、以下のコードは、例外を引き起こします。

また、コントローラアクションで設定され、_Layout.cshtmlで使用されるViewBag.WebAnalyticsParametersもあります。

_LayoutコードからViewBag.TitleおよびViewBag.WebAnalyticsParametersを削除すると、例外は発生せず、プロファイラアプリケーションによって捕捉されます。

例外として、例外はページの最初の読み込み時にのみ発生します。それをリフレッシュした後、例外が発生せず、ビューのコンパイルは問題が発生した場所です。

enter image description here

アップデート1:私は、空のMVC 4アプリケーションを作成して、再度このエラーを取得しました。 添付の画像を見ることができます。

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

<h2>Index</h2> 

アップデート2:このサンプルアプリで

ビュー(ホーム/インデックス)は、次のコードが含まれて私は5.3.2にMVC 4からプロジェクトをアップグレードしました。例外はまだ発生します。

+0

ビューにViewBag.Titleを設定していますが、それを直接入力するだけではないのはなぜですか? – Blackunknown

+0

コントローラ内でViewBagの値を設定するコードとViewを共有してください –

答えて

2

これらの例外は、使用されている基本となる動的オブジェクトによって発生します。 .NETフレームワークは、いつもこれらの例外を常にスローします。

ソリューション:VSでは、メニューツール/オプションに行き、左にトップレベルの項目Debuggingを選択して、を選択し、[V]マイコードのみを有効にします。これにより、フレームワークの内部にスローされた例外に対して、VSがむしろ壊れないようにします。

関連する問題