ASP.NET MVCrazor:HTML中的条件属性能改进吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

下面的代码看起来不干净。有什么改进代码的建议吗?

<li @if(ViewData["pagename"].ToString()=="Business details"){ <text>class="active" </text> } >
        <a  @if(ViewData["pagename"].ToString()=="Business details"){ <text>style="color: white; background-color: #08C; border: 1px solid #08C;" </text> }
            href="@Url.Action("BusinessDetails", "Business")">Business Details</a>
    </li> 
    <li @if (ViewData["pagename"].ToString() == "Booking policies"){ <text>class="active"</text> }> 
        <a  @if (ViewData["pagename"].ToString() == "Booking policies")
               { <text>style="color: white; background-color: #08C; border: 1px solid #08C;" </text> }
            href="@Url.Action("BookingPolicies", "Business")">Booking policies</a> 
    </li> 
提问于
用户回答回答于

MVC4测试版具有内置的条件属性...

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

如果@myClass为null,它根本不会使用该属性...

我知道这可能并不能解决你目前的问题,但值得注意!

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

用户回答回答于
<li class="@(ViewBag.pagename == "Business details" ? "active" : null)">  

应该style="..."用一个单独的类名替换内联,并在那里使用相同的语法。

但是,制作一个单独的HTML帮助器扩展方法会更简洁,该方法需要一个页面和操作名称并一般生成HTML。

扫码关注云+社区