2009-03-28 11 views
0

このコードではなぜこれらの結果が得られますか?Html.RouteLink busted?

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> 

結果:BTW

<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> 
:私は代わり<%の<%の%>フォームを使用する場合=%>が、それはこの生成形成
+0

あなたのルート設定を表示しますか? –

+0

ルートリンクを使用するときにcountroller/actionを指定する必要はありません。これは名前付きルートから取得します。 – UpTheCreek

答えて

0

Actionlinkのオブジェクト部分にコントローラとアクションを指定するのはなぜですか?

は、それは、このようにそれを行うのがベストではないでしょう:

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

ActionLinkのの第二のプロパティは常に目的のアクション名であり、あなたがCatalogMenuにそれを設定しているが、その後、あなたが作成しています"Index"と呼ばれるオブジェクト。この理由のために(私はあなたが 'CatalogMenu'が欲しいと思っていないので)、私はそれを取り除いた。

また、routeValuesオブジェクトの後にnullがあることに注意してください。 Html.ActionLinkのための10件のコンストラクタは、この1つは最もよいフィットするので、これはです:あなたは>代わりの<% ...%を使用している場合、

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

また<% = ...%>、それがしますリンクを出力しません。これは、ActionLinkが文字列を返すためです。タグ内の '='はすべて実質的にResponse.Writeです。

希望です。

+2

Html.RouteLink(文字列linkText、文字列routeName、オブジェクトrouteValues) - それはもっとそれをクリアするのに役立ちますか? –

+0

Lol。 RouteLink。私はそれを見ませんでした!私はあなたがActionLinkを使っていると思っていました。 :) –

+0

あなたのルートで質問を更新してください。特に、CatalogMenu? –

関連する問題