[英]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.