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/