ASP.NET WebForms GetVirtualPath всегда возвращает нуль - PullRequest
0 голосов
/ 09 марта 2011

Я только знакомлюсь с маршрутизацией 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 } });

Что я могу здесь делать не так?

1 Ответ

1 голос
/ 10 марта 2011

Полагаю, я отвечу на свой вопрос.Проблема была с моими ограничениями маршрута.Как только я удалил строки с new RouteValueDictionary { { "Name", @"[-_\w]+" } }, все начало работать.

...