Есть ли способ узнать, какой URL (в виде строки) соответствует зарегистрированному маршруту ASP.NET? - PullRequest
0 голосов
/ 27 февраля 2011

Если у меня есть следующие маршруты, каждый из которых представлен в виде строки: -

/account/index
/account  <-- which actually goes to /account/index

, и они были зарегистрированы в моем global.asax ... есть ли способ, которым я могу преобразовать это в объект Route, чтобы я мог тогда сделать это ...

var routeName = FigureOutTheRegisteredRoute("/account");
return RedirectToRoute(routeName);

Приветствия:)

Ответы [ 3 ]

2 голосов
/ 27 февраля 2011

Вы можете найти некоторые идеи в отладчике маршрутов Фила Хаака - посмотрите DebugHttpHandler.cs в частности ...

0 голосов
/ 27 февраля 2011

Что-то, как показано ниже - с использованием RouteBase.

    RouteData rd = new RouteData(this, new MvcRouteHandler());
    rd.Values.Add("controller", controllername);
    rd.Values.Add("action", actionname);
    rd.Values.Add("url", url);
    return rd

URL-манипуляции реализующее-routebase

EDIT

Вы можете использовать url-routing-debugger для QUERY routable .. чтобы увидеть, какой зарегистрированный маршрут соответствует моей строке URL

использовать консоль диспетчера пакетов Nuget - пакетный маршрутный отладчик

Вы можете запросить RouteCollection. частичный основной код, как показано ниже

в

protected void Application_Start()
{
RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);

и

public static class RouteDebugger
{
    public static void RewriteRoutesForTesting(RouteCollection routes)
    {
        using (routes.GetReadLock())
        {
            bool foundDebugRoute = false;
            foreach (RouteBase routeBase in routes)
            {
                Route route = routeBase as Route;
                if (route != null)
                {
                    route.RouteHandler = new DebugRouteHandler();
                }

                if (route == DebugRoute.Singleton)
                    foundDebugRoute = true;

            }
            if (!foundDebugRoute)
            {
                routes.Add(DebugRoute.Singleton);
            }
        }


    }

}
0 голосов
/ 27 февраля 2011

Извините, я не до конца понимаю, почему вы хотите это сделать. - (

Если вы не хотите регистрировать несколько маршрутов вручную в global.asax, то, возможно, вы хотите объявить маршруты на ваших контроллерах, используя атрибуты? Проверьте этот ответ: Маршрутизация ASP.NET MVC через атрибуты метода

Извините, если это не то, что вы ищете ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...