Как я могу получить имя маршрута в контроллере в ASP.NET MVC?

использовать ниже код snip

Task.WaitAll(Task.Run(async () => await service.myAsyncMethod()));
53
задан Mike Scott 12 December 2008 в 16:15
поделиться

2 ответа

Имя маршрута не хранится в маршруте, к сожалению. Это просто используется внутренне в MVC как ключ в наборе. Я думаю, что это - что-то, что можно все еще использовать при создании ссылок с HtmlHelper. RouteLink, например (возможно, где-то в другом месте также, никакая идея).

Так или иначе, я нуждался в этом также и здесь - то, что я сделал:

public static class RouteCollectionExtensions
{
    public static Route MapRouteWithName(this RouteCollection routes,
    string name, string url, object defaults, object constraints)
    {
        Route route = routes.MapRoute(name, url, defaults, constraints);
        route.DataTokens = new RouteValueDictionary();
        route.DataTokens.Add("RouteName", name);

        return route;
    }
}

, Таким образом, я мог зарегистрировать маршрут как это:

routes.MapRouteWithName(
    "myRouteName",
    "{controller}/{action}/{username}",
    new { controller = "Home", action = "List" }
    );

В моем действии Контроллера, я могу получить доступ к имени маршрута с:

RouteData.DataTokens["RouteName"]

Hope, которая помогает.

74
ответ дан Nicolas Cadilhac 7 November 2019 в 18:48
поделиться

При использовании стандартной установки MapRoute как ниже:

routes.MapRoute(    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

... это будет работать в представлении...

var routeName = Url.RequestContext.RouteData.Values["action"].ToString();
2
ответ дан 7 November 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: