对于“动态”对象的属性,PHP在c#.NET 4中的等价是什么?

时间:2011-02-09 15:21:19

标签: dynamic .net-4.0 asp.net-mvc-3 razor

我正在使用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)。

提前致谢。

1 个答案:

答案 0 :(得分:14)

您可以检查null是否是这样的:

@if(ViewBag.SectionSubTitle != null)

PHP中的

isset()实际上只检查是否存在值。从手册:

  如果测试,

isset()将返回FALSE   已设置为NULL的变量

您还可以在ViewData媒体资源上使用ViewDataDictionary.ContainsKey。因为ViewData["SectionSubTitle"]ViewBag.SectionSubTitle相等,所以在这种情况下你可以这样做:

@if(ViewData.ContainsKey("SectionSubTitle"))