2010-03-02 27 views
2

我在我的网站上有菜单, 某些链接是内部的,并且使用Html.ActionLink方法构建,有些链接是外部的,并且使用标签构建。为asp.net mvc应用程序创建链接

但我不喜欢这段代码,我优先考虑有一行而不是两行。 但我不知道该怎么做,请问有人能帮我吗?

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

回答

3

我会提取此出一个html的辅助方法。它看起来是这样的:

public static string MenuItemLink(this HtmlHelper html, MenuItem item) { 
    ... 
} 

您的视图代码看起来像财产以后: <%= Html.MenuItemLink(项目)%>

+0

我找到了解决方案,为UrlHelper而不是HtmlHelper构建扩展方法,它适用于我。非常感谢。 <%=Html.Encode(item.Title)%> 2010-03-02 15:14:06

0

为什么不建立链接在你的控制器,并纳入模型?那你只需要第二行?也就是说,您的MenuItem模型是链接及其相关文本的集合。使用控制器中的UrlHelper在控制器中创建链接。

相关问题