2011-01-10 14 views
1

Iました次のルートを間違ったルートを返します。ページャがURLを取得するには、次のコードを使用している:RouteTable.Routes.GetVirtualPathは()ASP.NET MVCで

var virtualPathData = RouteTable.Routes.GetVirtualPath(this.viewContext.RequestContext, pageLinkValueDictionary); 

if (virtualPathData != null) 
{ 
    string linkFormat = "<a href=\"{0}\">{1}</a>"; 
    return String.Format(linkFormat, virtualPathData.VirtualPath, linkText); 
} 
else 
{ 
    return null; 
} 

私がこのコードを実行しているが、問題は、ある「MyHomeを/記事/」ページGetVirtualPathは常に/最初のルート「MyHomeを/著者を返します。ルート内のプレフィックス "MyHome/Articles /"は完全に無視されます。

ActionLinkを使用すると、それはうまく動作します。ちょうどGetVirtualPathからではありません。

アイデア?

ありがとうございました。

+1

あなたはRoute Debuggerを見ましたか? http://haacked.com/archive/2008/03/13/url-routing-debugger.aspxルートがどのように処理されているかを把握するのに役立ちます。 –

+0

はい、私は、デバッガでうまく見える、それはGetVirtualPathのバグかもしれないか、何か私のルートに間違っていますか? – user568385

答えて

0

あなたがMyHomeを/記事

に改ページを適用する場合は、

のようなハードコードされたパスを与えることができます

yourpath = "MyHomeを/記事ページ=?" + PAGE_NUMBER。

と表示されるたびに、そのページネーミングヘルパーをビューで使用するか、<%= Html.ActionLink()%>およびこれを通過する経路パラメータでページパラメータを受け取る必要があります。