ASP.NET MVC剃刀:HTML中的条件属性

下面的代码似乎并不干净。 任何改善代码的build议?

<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> 

MVC4testing版具有内置的条件属性…

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

如果@myClass为空,它将不会使用属性…

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

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

 <li class="@(ViewBag.pagename == "Business details" ? "active" : null)"> 

您应该用一个单独的类名replace内联style="..." ,并使用相同的语法。

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

我使用一个小的帮助器方法,如果该值非空,并且定义了布尔函数expression式的计算结果为true ,将有条件地添加一个属性:

 public static MvcHtmlString Attr(this HtmlHelper helper, string name, string value, Func<bool> condition = null) { if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(value)) { return MvcHtmlString.Empty; } var render = condition != null ? condition() : true; return render ? new MvcHtmlString(string.Format("{0}=\"{1}\"", name, HttpUtility.HtmlAttributeEncode(value))) : MvcHtmlString.Empty; } 

一旦定义,我可以在我的Razor视图中使用这个方法:

 <li @(Html.Attr("class", "new", () => example.isNew))> ... </li> 

如果example.isNew == true ,上面的代码将呈现<li class="new">...</li> ,否则将省略整个class属性。

在MVC4中

 <!DOCTYPE html> <html> <head> </head> <body> @{ string css = "myDiv"; } <div class='@css'></div> </body> </html> 

要么

 <!DOCTYPE html> <html> <head> </head> <body> @{ string css = "class=myDiv"; } <div @css></div> </body> </html> 

更多在这里: http : //evolpin.wordpress.com/2012/05/20/mvc-4-code-enhancements/