2014-10-21 2 views
1

я загружаю в коллекцию маршрутов по проекту MVC несколько маршрутов в следующем формате:Получение URL из коллекции маршрута

routes.MapRoute(
      name: string.Format("{0}/{1}/{2}/{3}", controller, action, seo.PageRefProductType, seo.PageRefProductId), 
      url: seo.FriendlyUrl, 
      defaults: new { controller = controller, action = action, id=seo.PageRefProductId} 
      ); 

Когда я к нему доступ с APIController, я могу использовать Url.Route (производный от System.Web.Http.Routing.UrlHelper), чтобы получить дружественный URL-адрес в этом маршруте.

Мой вопрос в том, как я могу получить доступ к этому URL-адресу, когда у меня нет метода Url.Route, например, когда я не в контроллере.

Это мое приложение начать global.asax:

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     GlobalConfiguration.Configure(WebApiConfig.Register); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

     //loading the routes here: 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 

     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier; 
     LocalSiteManager.UpdateLatestReviewInManagedData(); 

     //cache - Here is where I want to use the routes 
     LocalWorkFlow.StaticCache.LoadStaticCache(RouteTable.Routes); 

    } 

Вот что я хочу в LoadStaticCache:

public static void LoadStaticCache(RouteCollection routes) 
{ 
    //get the URL of specific route by its' name 
    string myUrl = routes["myUrlName"].Url; 
} 

ответ

1

То, что я сейчас добавляет имя каждого маршрута и URL к Dictonary, где мой ключ - название маршрута, а значение - это URL-адрес, затем я могу получить доступ к нему из любого места, где хочу ...

Смежные вопросы