下面的代码看起来并不干净。有什么改进代码的建议吗?
<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>
发布于 2012-02-23 01:20:37
MVC具有内置的条件属性...
<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
发布于 2012-02-23 01:10:04
<li class="@(ViewBag.pagename == "Business details" ? "active" : null)">
您应该将内联style="..."
替换为单独的类名,并在其中使用相同的语法。
但是,创建一个单独的HTML helper扩展方法会更简洁,该方法接受页面和操作名称并生成HTML。
发布于 2014-04-10 04:30:27
我使用了一个小帮助器方法,如果值非空,并且如果定义了布尔函数表达式,则当布尔函数表达式的计算结果为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
属性。
https://stackoverflow.com/questions/9399531
复制相似问题