Создать ссылку для приложения asp.net mvc - PullRequest
2 голосов
/ 02 марта 2010

У меня есть меню на моем сайте, некоторые ссылки являются внутренними и создаются с помощью метода 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>
<%} %>
<%
    } %>

Ответы [ 2 ]

3 голосов
/ 02 марта 2010

Я бы извлек это из вспомогательного метода html. Это будет выглядеть примерно так:

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

Ваш код вида будет выглядеть примерно так: <% = Html.MenuItemLink (item)%>

0 голосов
/ 02 марта 2010

Почему бы не встроить ссылку в свой контроллер и не включить ее в модель? Тогда вам нужна только вторая строка? То есть ваша модель MenuItem представляет собой набор ссылок и связанного с ними текста. Используйте UrlHelper в контроллере, чтобы создать ссылку в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...