私は ASP.NET ルーティングを紹介したばかりで、現在 2 つのルートを登録しています。
routes.MapPageRoute(
"default",
"{Path}/{Name}.aspx{Query}",
"~/Default.aspx",
true,
new RouteValueDictionary { { "Name", "default" } },
new RouteValueDictionary { { "Name", @"[-_\w]+" } });
routes.MapPageRoute(
"home",
"{Name}.aspx{Query}",
"~/Default.aspx",
true,
new RouteValueDictionary { { "Name", "default" } },
new RouteValueDictionary { { "Name", @"[-_\w]+" } });
ただし、これらのルートを使用して URL を作成しようとすると、常に例外が発生します。私はこれを試しました:
private string GetVirtualPath(RouteValueDictionary values)
{
return RouteTable.Routes.GetVirtualPath(
null, values).VirtualPath;
}
そしてこれも:
private string GetVirtualPath(RouteValueDictionary values)
{
var wrapper = new HttpContextWrapper(HttpContext.Current);
return RouteTable.Routes.GetVirtualPath(
new RequestContext(wrapper,
RouteTable.Routes.GetRouteData(wrapper)),
values).VirtualPath;
}
RouteTable.Routes.GetVirtualPath
いずれにせよ、次の呼び出し時にnull 参照例外が発生します。
GetVirtualPath(new RouteValueDictionary { { "Name", entity.Name } });
あるいは:
GetVirtualPath(new RouteValueDictionary { { "Name", entity.Name }, { "Query", string.Empty } });
ここで何が間違っているのでしょうか?