Html.RouteLink накрылся? - PullRequest
0 голосов
/ 28 марта 2009

Почему этот код дает такие результаты?

КОД:

    <%@ Control Language="C#" 
            Inherits="System.Web.Mvc.ViewUserControl< RoomsAlive.ViewModels.ProductCatalogViewModel >" %>

<div id="product_nav">
    <ul>
    <%--ADD PREV TAB--%>
    <% if (Model.HasPreviousPage) %>
    <% { %>
        <li><%= Html.RouteLink("<<", "CatalogMenu", new { controller = "Catalog", action = "Index", style = (Model.GroupName), position = (Model.PageIndex - 1) })%></li>
    <% } %>
    <%--LOOP HERE--%>
    <%  foreach (RoomsAlive.Models.ProductMenuView myFPV in Model.ProductMenu)
        { %>
        <li><%= Html.RouteLink(myFPV.Name, "CatalogMenu", new { controller = "Catalog", action = "Index", group = Model.GroupName })%></li>
    <%  } %>
    <%--ADD NEXT TAB--%>
    <% if (Model.HasNextPage) %>
    <% { %>
        <li><%= Html.RouteLink(">>", "CatalogMenu", new { controller = "Catalog", action = "Index", position = (Model.PageIndex + 1) })%></li>
    <% } %>
    </ul>
</div>

РЕЗУЛЬТАТЫ:

<div id="product_nav">
    <ul>
        <li><a href="">LifeStyle</a></li>
        <li><a href="">Rooms</a></li>
    </ul>
</div>

Кстати: если я использую форму <%%> вместо формы <% =%>, она выдаст:

<div id="product_nav">
    <ul>
        <li></li>
        <li></li>
    </ul>
</div>

1 Ответ

0 голосов
/ 29 марта 2009

Почему вы указываете контроллер и действие в объектной части Actionlink?

Не лучше ли сделать это так:

<%= Html.RouteLink("<<", "Index", "Catalog", new { style = Model.GroupName, position = (Model.PageIndex - 1) }, null)%>

Вторым свойством ActionLink всегда является желаемое имя действия, и вы устанавливаете его в CatalogMenu, но затем вы создаете объект с надписью «Index». По этой причине (поскольку я понятия не имею, что вы хотите, чтобы «CatalogMenu» было), я вынул его.

Обратите также внимание на нуль после объекта routeValues. Это потому, что 10 конструкторов для Html.ActionLink, этот подходит лучше всего:

ActionLink(LinkText, ActionName, ControllerName, RouteValues, HtmlAttributes)

Кроме того, если вы используете <% ...%> вместо <% = ...%>, ссылка не будет выводиться. Это потому, что ActionLink возвращает строку. Все, что делает '=' в теге, по сути является Response.Write.

Надеюсь, это объясняет это.

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