2016-03-24 18 views
2

Wir erhalten RuntimeBinderException für die Viewbag-Elemente, die in _Layout.cshtml verwendet werden. Wir beobachten diese Ausnahmen im Speicherprofiler. Sie sind nicht fatal (alles funktioniert in Ordnung), aber nervig und wir wollen sie beseitigen.RuntimeBinderException bei Verwendung von ViewBag

Zum Beispiel kann der folgende Code verursacht eine Ausnahme:

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

ViewBag.Title ist in der Ansicht einzustellen.

Wir haben auch ViewBag.WebAnalyticsParameters, die in Controller-Aktion festgelegt und in _Layout.cshtml verwendet wird.

Wenn wir ViewBag.Title und ViewBag.WebAnalyticsParameters aus dem _Layout-Code entfernen, treten die Ausnahmen nicht auf und werden von der Profileranwendung abgefangen.

Als eine Randnotiz treten die Ausnahmen nur beim erstmaligen Laden der Seite auf. Nach der Aktualisierung treten keine Ausnahmen auf, die anzeigen, dass die Ansichtszusammenstellung der Ort ist, an dem wir auf Probleme stoßen.

enter image description here

Update 1: Ich habe wieder eine leere MVC 4-Anwendung und immer diese Fehlermeldung erstellt. Sie können das angehängte Bild sehen.

Die Ansicht (Home/Index) in dieser Probe App enthält den folgenden Code:

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

<h2>Index</h2> 

Update 2: Ich habe das Projekt von MVC 4 bis 5.3.2 aktualisiert haben. Die Ausnahmen treten immer noch auf.

+0

Warum setzen Sie ViewBag.Title in der Ansicht und füllen es nicht einfach direkt aus? – Blackunknown

+0

Bitte teilen Sie den Code, wo Sie die Werte im ViewBag im Controller und in der Ansicht festlegen –

Antwort

2

Diese Ausnahmen werden durch das zugrunde liegende dynamische Objekt verursacht, das verwendet wird. Das .NET-Framework löst diese Ausnahmen immer irgendwie aus.

Lösung: in VS gehen zum Menü Extras/Optionen, wählen Sie Top-Level-Element Debugging auf der linken Seite, und wählen Sie [v] Gerade My-Code aktivieren. Dies verhindert, dass VS bei Ausnahmen, die tief in das Framework geworfen werden, ziemlich nutzlos bricht.

Verwandte Themen