Я только знакомлюсь с маршрутизацией ASP.NET, и на данный момент у меня зарегистрированы два маршрута:
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
, когда я звоню:
GetVirtualPath(new RouteValueDictionary { { "Name", entity.Name } });
Или даже:
GetVirtualPath(new RouteValueDictionary { { "Name", entity.Name }, { "Query", string.Empty } });
Что я могу здесь делать не так?