在 ASP.NET MVC 视图中应用条件属性





5.00/5 (3投票s)
在 ASP.NET MVC 视图中应用条件属性。
如果您之前尝试过在 MVC 视图中处理任何类型的条件逻辑,您就会知道,让一切正常工作往往很棘手。ASP.NET MVC 的新版本中提供了一个功能,支持处理条件属性,这可能会让您视图中大量的 if 语句和其他逻辑成为过去。
丑陋的 If 语句和三元运算符。
以前,如果您想为特定元素添加条件属性,您需要使用条件语句(例如 if 语句、switch 语句或使用 三元运算符 的内联 if 语句)。
如果您需要检查模型的特定属性并相应地应用一个类,您可能会使用如下所示的 if 语句:
<!-- Using an if-statement --> <div @{if (Model.YourProperty != null){<text>class="@Model.YourProperty"</text>}}>Your Content</div>
或者
<!-- Using a ternary operator --> <div class="@(Model.YourProperty != null ? Model.YourProperty : "")">Your Content</div>
在 MVC4+ 中使用条件属性
较新版本的 ASP.NET MVC(4 及更高版本)支持以下语法:
<!-- Using a Conditional Attribute --> <div class="@Model.YourProperty">Your Content</div>
这看起来很简单,但是 Razor 视图引擎会在后台完成一些工作,并自动处理之前看到的一些逻辑。因此,如果在属性中检查的属性或值为空,则该属性甚至不会被写入。 (这仅适用于空值,空字符串仍然会渲染相应的属性)
使用上面的语法,假设我们传递一个模型,其 YourClassToApply
属性为 null,以前版本的 MVC 会渲染以下内容:
<div class>Your Content</div>
但是,较新版本会检测到该属性为 null,并完全忽略写入该属性:
<div>Your Content</div>
上面的示例显然只是演示了类属性中的此功能,但是应该注意的是,它适用于可以以相同方式应用的任何属性。自定义 HTML5 数据属性或 checked 属性也是使用这种方式的绝佳选择。