dynamic - 对于 'dynamic'对象的属性,在C#.NET 4中,PHP的isset等价的是什么?

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

当我使用ViewBag时,我正在使用MVC 3。我想测试是否已分配ViewBag的属性之一。我知道在PHP中可以进行isset(variable),但是.NET 4中是否有类似的东西?

场景是我正在制作一个嵌套布局,该布局通过ViewBag带有节标题和节字幕。它们由分隔符分隔,并且副标题是可选的。如果未设置副标题,我不想显示分隔符。

这就是我想象的将isset替换为.NET 4等价物的方式。

@section header 
{
    <h2>@ViewBag.SectionTitle</h2>
    @if(isset(ViewBag.SectionSubTitle)) 
    { 
        <div id="section-title-seperator"> - </div><h3>@ViewBag.SectionSubTitle</h3> 
    }
}

在直接回答问题的同时,我还开放其他替代解决方案(以防滥用ViewBag)。

提前致谢。

最佳答案

您可以像这样检查它是否是null:
@if(ViewBag.SectionSubTitle != null)

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

isset() will return FALSE if testing a variable that has been set to NULL



您还可以在ViewDataDictionary.ContainsKey属性上使用 ViewData 。由于ViewData["SectionSubTitle"]ViewBag.SectionSubTitle等同,因此在这种情况下,您可以执行以下操作:
@if(ViewData.ContainsKey("SectionSubTitle"))

关于dynamic - 对于 'dynamic'对象的属性,在C#.NET 4中,PHP的isset等价的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946827/

相关文章:

ios - 如何在ios应用程序中动态填充文本字段

java - 在 IDE 外部运行时出现 ClassNotFoundException

asp.net-mvc - 什么是 Request.InputStream 以及何时使用它?

asp.net-mvc - 由 javascript 更新的 asp.net mvc 禁用文本框不会发布新值

javascript - 以动态形式计算已检查的行数

video - HTML5 视频播放器 : dynamically loading videos

c# - 使用 Task 执行长时间运行的进程,如果有则显示 Exception

c# - 我可以停止 .NET 4 执行尾调用消除吗?

c# - DirectoryEntry() 在 .NET 4.0 中有效,但在 .NET 3.5 中无效?

ASP.NET MVC 自定义 ModelMetadataProvider 和 ModelValidatorProvider