65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2013年11月27日

CPOL

2分钟阅读

viewsIcon

44522

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

如果您之前尝试过在 MVC 视图中处理任何类型的条件逻辑,您就会知道,让一切正常工作往往很棘手。ASP.NET MVC 的新版本中提供了一个功能,支持处理条件属性,这可能会让您视图中大量的 if 语句和其他逻辑成为过去。

Conditional

丑陋的 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 属性也是使用这种方式的绝佳选择。

© . All rights reserved.