Mah*_*esh 75 asp.net-mvc razor asp.net-mvc-3
下面的代码看起来不干净.有什么改进代码的建议吗?
<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>
Run Code Online (Sandbox Code Playgroud)
jcr*_*898 123
MVC内置了条件属性......
<div @{if (myClass != null) { <text>class="@myClass"</text> } }>Content</div>
<div class="@myClass">Content</div>
Run Code Online (Sandbox Code Playgroud)
如果@myClass为null,它根本就不会使用该属性...
我知道这可能无法解决您当前的问题,但值得注意的是!
http://weblogs.asp.net/jgalloway/archive/2012/02/16/asp-net-4-beta-released.aspx
SLa*_*aks 72
<li class="@(ViewBag.pagename == "Business details" ? "active" : null)">
Run Code Online (Sandbox Code Playgroud)
您应该style="..."使用单独的类名替换内联,并在那里使用相同的语法.
但是,创建一个单独的HTML帮助程序扩展方法更为清晰,该方法采用页面和操作名称并一般生成HTML.
def*_*ost 19
我使用一个小辅助方法,如果值非空,将有条件地添加一个属性,如果定义,当布尔函数表达式求值为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;
}
Run Code Online (Sandbox Code Playgroud)
一旦定义,我可以在我的Razor视图中使用此方法:
<li @(Html.Attr("class", "new", () => example.isNew))>
...
</li>
Run Code Online (Sandbox Code Playgroud)
<li class="new">...</li>如果example.isNew == true,如果不会省略整个class属性,上面的代码将呈现.
@{ var classAttr= needClass ? "class=\"class-name\"" : "" }
Run Code Online (Sandbox Code Playgroud)
然后在 HTML 中
<li @Html.Raw(classAttr) >
Run Code Online (Sandbox Code Playgroud)
在MVC4中
<!DOCTYPE html>
<html>
<head>
</head>
<body>
@{
string css = "myDiv";
}
<div class='@css'></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
或者
<!DOCTYPE html>
<html>
<head>
</head>
<body>
@{
string css = "class=myDiv";
}
<div @css></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
更多内容在这里:http://evolpin.wordpress.com/2012/05/20/mvc-4-code-enhancements/
| 归档时间: |
|
| 查看次数: |
92333 次 |
| 最近记录: |