J'ai un menu sur mon site Web, certains liens sont internes et construits avec la méthode Html.ActionLink, et certains sont externes et construits avec une balise.
Mais je n'aime pas ce code, je préfère avoir une ligne au lieu de deux. Mais je ne sais pas comment 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>
<%} %>
<%
} %>
2 réponses
Je voudrais extraire cela vers une méthode d'aide html. Cela ressemblerait à quelque chose comme :
public static string MenuItemLink(this HtmlHelper html, MenuItem item) {
...
}
Votre code de vue ressemblerait à quelque chose comme : <%= Html.MenuItemLink(item) %>
Pourquoi ne pas construire le lien dans votre contrôleur et l'intégrer dans le modèle ? Alors vous n'avez besoin que de la deuxième ligne ? C'est-à-dire que votre modèle MenuItem est une collection de liens et de leur texte associé. Utilisez l'UrlHelper dans le contrôleur pour créer le lien dans le contrôleur.
Questions connexes
De nouvelles questions
asp.net
ASP.NET est un cadre de développement d'applications Web Microsoft qui permet aux programmeurs de créer des sites Web dynamiques, des applications Web et des services Web. Il est utile d'utiliser cette balise conjointement avec la balise de type de projet, par ex. [asp.net-mvc], [asp.net-webforms] ou [asp.net-web-api]. N'utilisez PAS cette balise pour des questions sur ASP.NET Core - utilisez plutôt [asp.net-core].