2013-05-30 23 views
8

Trong MVC4, có thể cho ViewBag bao giờ là null không? Nếu vậy, theo kịch bản nào có thể? Nếu không, làm thế nào để bạn biết?Có thể ViewBag bị null trong MVC4 không?

Cụ thể, tôi muốn biết nếu nó có thể là null trong chế độ xem. Tuy nhiên, thông tin bổ sung về việc liệu nó có thể là null trong bộ điều khiển sẽ hữu ích hay không. Ví dụ: Tôi có cần phải thực hiện kiểm tra null không?

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

Trong một cái nhìn hoặc trong một bộ điều khiển? – SLaks

+0

Hoặc tôi giả sử, nhưng cụ thể trong một chế độ xem. – matthewpavkov

Trả lời

17

Không, nó không thể.

Các getter ViewBag tài sản trong WebViewPage trông như thế này:

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

Đó là những gì tôi đang tìm kiếm. – matthewpavkov

+0

Tôi đã thử theo dõi điều này xuống bản thân mình, tuy nhiên tất cả những gì tôi có thể tìm thấy là 'ViewBag năng động công cộng {get; } 'trong' ViewMasterPage'. Bạn định vị cái này như thế nào? – matthewpavkov

+2

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

5

ViewBag chính nó không thể được null, vì vậy việc kiểm tra đầu tiên

if (ViewBag != null) 

là vô ích

Các vấn đề liên quan