2010-03-02 5 views
2

J'ai menu sur mon site, certains liens sont internes et construit avec la méthode Html.ActionLink, et certains sont externes et construit avec tag.Créer un lien pour l'application asp.net mvc

Mais je n'aime pas ce code, je préfère avoir une ligne au lieu de deux lignes. Mais je ne sais pas comment le faire, quelqu'un peut-il m'aider s'il vous plaît?

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

Répondre

3

J'extrait ceci à une méthode d'aide HTML. Il ressemblerait à quelque chose comme:

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

Votre code de vue regarderait somthing comme: <% = Html.MenuItemLink (item)%>

+0

J'ai trouvé la solution pour construire la méthode d'extension pour UrlHelper au lieu de HtmlHelper et cela fonctionne pour moi. Merci beaucoup. <%=Html.Encode(item.Title)%>

0

Pourquoi ne pas construire le lien dans votre contrôleur et l'incorporer dans la modèle? Alors vous avez seulement besoin de la deuxième ligne? Autrement dit, votre modèle MenuItem est une collection de liens et leur texte associé. Utilisez UrlHelper dans le contrôleur pour créer le lien dans le contrôleur.

Questions connexes