asp.net-mvc - 如何使用razor View 引擎简洁地创建可选的HTML属性?

标签 asp.net-mvc razor viewengine

我正在寻找一种用更少的代码行(也许 5 行)编写以下代码的方法。我想我可以做与所选类相同的事情,但这个 Razor 语法看起来不太漂亮。

<ul>
@foreach (var mi in Model.MenuItems) {
  <li@(mi.Selected?" class=\"selected\"":null)>
  @if (string.IsNullOrEmpty(mi.Title)) {
    <a href="@mi.Href">@mi.Text</a>
  } else {
    <a href="@mi.Href" title="@mi.Title">@mi.Text</a>
  }
  </li>
}
</ul>

最佳答案

已在 ASP.NET MVC 4 中修复

参见http://weblogs.asp.net/jgalloway/archive/2012/02/16/asp-net-4-beta-released.aspx

条件属性渲染

如果您有一个可能为 null 的属性,过去您需要执行 null 检查以避免写出空属性,如下所示:

<div @{if (myClass != null) { <text>class="@myClass"</text> } }>Content</div>

现在 Razor 能够自动处理该问题,因此您只需写出该属性即可。如果为 null,则不写入该属性:

<div class="@myClass">Content</div>

因此,如果 @myClass 为 null,则输出如下:

<div>Content</div>

关于asp.net-mvc - 如何使用razor View 引擎简洁地创建可选的HTML属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800473/

相关文章:

asp.net-mvc - 我们正在放弃我们的 beta 标签。谷歌会怎么做?

asp.net-mvc - ASP.NET MVC 路由 - 您是否在 URL 中公开 ID?

c# - 如何从 MVC razor c# 中的动态模型获取属性值

vb.net - VB 中 .NET MVC3 Razor View 中的命名空间引用?

c# - 什么是 View 引擎?它实际上做了什么?

asp.net-mvc - 混合 spark 和 webform View 引擎

asp.net-mvc - 与 ASP.NET WebForms 相比,ASP.NET MVC 页面的 'page lifecycle' 是什么?

c# - 我如何将登录页面设置为我在 C# 中没有主菜单的第一页

html - 如何在 html razor view mvc4 中增加 TextArea 的大小?

asp.net-mvc - 如何对指定 Controller 的部分共享 View 进行分组?