2013-05-30 3 views
8

In MVC4, ist es möglich für ViewBag jemals null zu sein? Wenn ja, unter welchen Umständen könnte es sein? Wenn nicht, woher weißt du das?Kann ViewBag in MVC4 null sein?

Insbesondere möchte ich wissen, ob es null in einer Ansicht sein kann. Zusätzliche Informationen darüber, ob es in einem Controller null sein kann, wären jedoch nützlich.

Zum Beispiel, muss ich eine null Prüfung durchführen?

if (ViewBag != null && ViewBag.Something != null && ViewBag.Something.Foo == "Bar") 
{ 
    // can ViewBag be null? 
} 
+0

in einer Ansicht oder in einem Controller? – SLaks

+0

Entweder ich denke, aber speziell in einer Ansicht. – matthewpavkov

Antwort

17

Nein, es kann nicht.

Die ViewBag Eigenschaft Getter in WebViewPage sieht wie folgt aus:

public dynamic ViewBag 
{ 
    get 
    { 
     if (_dynamicViewData == null) 
     { 
      _dynamicViewData = new DynamicViewDataDictionary(() => ViewData); 
     } 
     return _dynamicViewData; 
    } 
} 
+0

Das ist, was ich gesucht habe. – matthewpavkov

+0

Ich habe versucht, dies selbst zu verfolgen, aber alles, was ich finden konnte, ist 'public dynamic ViewBag {get; } 'in' ViewMasterPage'. Wie haben Sie das gefunden? – matthewpavkov

+2

@ Matthewpavkov: http://aspnetwebstack.codeplex.com/ – SLaks

5

ViewBag selbst kann nicht null sein, so dass die erste Prüfung

if (ViewBag != null) 

nutzlos ist