global.asax に登録されている次の 1 つのルートがあります。
routes.MapRoute(
"Home", // Unique name
"", // Root url
new { controller = "Home", action = "Index",
tag = string.Empty, page = 1 }
);
キュール。サイトを起動すると、このルートが正しく選択されます。
ここで、プログラムで次のことを実行しようとすると、NULL が返されます。
var pageLinkValueDictionary =
new RouteValueDictionar(linkWithoutPageValuesDictionary)
{{"page", 2}};
VirtualPathData virtualPathData =
RouteTable.Routes.GetVirtualPath(viewContext, "Home"
pageLinkValueDictionary);
// NOTE: pageLinkValueDictionary ==
// Key: Action, Value: Index; Key: page, Value: 2
なぜこれが起こるのでしょうか?
Home ルートを見つけて、クエリ文字列項目として見つからない値を追加するという印象を受けましたか?
アップデート
これではまだ運がありません。また、MVC RCを使用して、viewContext を veiwContext.RequestContext .. に変更する必要があります。これはコンパイルされますが、まだ null の結果が得られます。
更新 2
page=1
デフォルト項目のないルートがある場合、ルートはIS FOUNDです。例えば。
routes.MapRoute(
"Home",
"",
new { controller = "Post", action = "Index", tags = string.Empty }
);
..そしてインスタンスをRouteTable.Routes.GetVirtualPath
返しVirtualPathData
ます。page=1
(デフォルト値)を追加すると、VirtualPathData
返されるインスタンスは null ですか?