我的网站上有菜单, 一些链接是内部的,并使用Html.ActionLink方法构建,有些是外部的,并使用标记构建。
但我不喜欢这段代码,我更喜欢有一行而不是两行。 但我不知道怎么做,有人可以帮帮我吗?
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<%
foreach (AtomicCms.Core.DomainObjectsImp.MenuItem item in Model.MenuItems)
{
if (!item.IsExternalUrl)
{
%>
<tr align="left">
<td>
<%=Html.ActionLink(Html.Encode(item.Title), "Content", "Home", new { id = item.Entry.Id, name = item.Entry.Alias }, new {title = Html.Encode(item.Title), @class="mainlevel"})%>
</td>
</tr>
<%}
else
{
%>
<tr align="left">
<td>
<a href="<%=item.NavigateUrl %>" class="mainlevel">
<%=Html.Encode(item.Title)%></a>
</td>
</tr>
<%} %>
<%
} %>
答案 0 :(得分:3)
我会将其解析为html辅助方法。它看起来像是:
public static string MenuItemLink(this HtmlHelper html, MenuItem item) {
...
}
您的观看代码看起来像: &lt;%= Html.MenuItemLink(item)%&gt;
答案 1 :(得分:0)
为什么不在控制器中构建链接并将其合并到模型中?那你只需要第二行?也就是说,您的MenuItem模型是链接及其相关文本的集合。使用Controller中的UrlHelper在控制器中创建链接。