2010-03-02 64 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在控制器中創建鏈接。

相關問題