2013-10-05 2 views
2

Как известно, маршрут отображается в Global.asax файле, например:Как получить свойства URL-адреса маршрута по названию маршрута, используя код C#?

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

Существует метод/класс, где я могу получить доступ к свойствам URL-адрес Название маршрута, обеспечивая название маршрута?

Например, для Default, я хочу назвать что-то вроде

public object[] GetRoutePropertiesByName(string name) { 
    // process here the `controller`, `action`, `id` // there might be also other values 
} 
+0

Отъезд [этот вопрос] (http://stackoverflow.com/questions/4748342/how-to-determine-if-an-arbitrar у-url-ссылок-а определенный маршрутное/4749840). Класс RouteInfo предоставляет информацию маршрута на основе URL-адреса. –

ответ

2

Это, как вы можете получить маршрут по имени:

RouteTable.Routes[routeName] 

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

var route = RouteTable.Routes[routeName] as Route; 
if (route != null) 
{ 
    var url = route.Url;   
    var controller = route.Defaults["controller"] as string; 
    var action = route.Defaults["action"] as string; 
    // ... 
} 
Смежные вопросы