簡體   English   中英

HTML.RouteLink崩潰了嗎?

[英]Html.RouteLink busted?

為什么這段代碼會產生這些結果?

碼:

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

為什么要在Actionlink的對象部分中指定控制器和動作?

這樣做不是最好的方法:

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

ActionLink的第二個屬性始終是所需的動作名稱,您將其設置為CatalogMenu,但是隨后您將創建一個顯示“ Index”的對象。 由於這個原因(由於我不知道您希望'CatalogMenu'是什么),我將其刪除。

另請注意routeValues對象之后的null。 這是因為Html.ActionLink的10個構造函數最適合:

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

另外,如果使用<%...%>而不是<%= ...%>,則它將不會輸出鏈接。 這是因為ActionLink返回一個字符串。 標簽中所有'='所做的實際上是一個Response.Write。

希望這能解釋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM