MVC4中的ViewBag是否可能为空?

8
在MVC4中,ViewBag是否可能为null?如果可以,那么在什么情况下会是这样呢?如果不行,你怎么知道呢?
具体而言,我想知道它在视图中是否可能为null。然而,关于它在控制器中是否可能为null的额外信息也很有用。
例如,我需要执行一个null检查吗?
if (ViewBag != null && ViewBag.Something != null && ViewBag.Something.Foo == "Bar")
{
    // can ViewBag be null?
}

在视图中还是在控制器中? - SLaks
任何一种方式都可以,但是特别是在视图中。 - matthewpavkov
2个回答

17
不行。 在WebViewPage中,ViewBag属性的获取器如下所示:
public dynamic ViewBag
{
    get
    {
        if (_dynamicViewData == null)
        {
            _dynamicViewData = new DynamicViewDataDictionary(() => ViewData);
        }
        return _dynamicViewData;
    }
}

我尝试自己追踪,但是我只能在ViewMasterPage中找到public dynamic ViewBag { get; }。你是如何定位到它的? - matthewpavkov

5

ViewBag 本身不能为 null,所以首先进行检查。

if (ViewBag != null) 

是无用的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接