我正在使用ViewBag时使用MVC 3。我想测试是否已分配ViewBag的其中一个属性。我知道在PHP中你可以做isset(变量),但在.NET 4中有类似的东西吗?
场景是我正在制作一个嵌套的布局,它通过ViewBag获取一个部分标题和一个部分字幕。它们由分隔符分隔,子标题是可选的。如果未设置子标题,我不想显示分隔符。
这就是我想象的那样,isset将被.NET 4 equivelant取代。
@section header
{
<h2>@ViewBag.SectionTitle</h2>
@if(isset(ViewBag.SectionSubTitle))
{
<div id="section-title-seperator"> - </div><h3>@ViewBag.SectionSubTitle</h3>
}
}
在我的问题的直接回答旁边,我也对替代解决方案持开放态度(如果我滥用ViewBag)。
提前致谢。
答案 0 :(得分:14)
您可以检查null
是否是这样的:
@if(ViewBag.SectionSubTitle != null)
。
isset()
实际上只检查是否存在值。从手册:
如果测试,isset()将返回FALSE 已设置为NULL的变量
您还可以在ViewData
媒体资源上使用ViewDataDictionary.ContainsKey
。因为ViewData["SectionSubTitle"]
与ViewBag.SectionSubTitle
相等,所以在这种情况下你可以这样做:
@if(ViewData.ContainsKey("SectionSubTitle"))