为什么此代码会产生这些结果?
CODE:
<%@ 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>
BTW:如果我使用&lt; %%&gt;形式而不是&lt;%=%&gt;形成它产生这个:
<div id="product_nav">
<ul>
<li></li>
<li></li>
</ul>
</div>
答案 0 :(得分:0)
为什么要在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)
此外,如果您使用&lt;%...%&gt;而不是&lt;%= ...%&gt;,然后它不会输出链接。这是因为ActionLink返回一个字符串。标签中的所有'='实际上都是Response.Write。
希望这能解释它。