Разбор пользовательского расширения файла маршрута MVC из RequestContext

#c# #asp.net-mvc #path #requestcontext

#c# #asp.net-mvc #путь #requestcontext

Вопрос:

Я настроил два пользовательских расширения для включения MVC в IIS6.

Таким образом, к сайту можно получить доступ с URL-адресом либо чего-то подобного…

mysite/mycontroller.europe/myaction

или что-то подобное…

mysite/mycontroller.america/myaction

Какой наиболее надежный способ найти расширение из RequestContext экземпляра?

Итак, я хотел бы иметь возможность написать что-то вроде…

 var location = reqContext.......GetExtenstion(); // location = "europe"
  

и, очевидно, это сработает, даже если настройки сайта / каталогов немного изменятся.

Ответ №1:

Определите маршрут:

 routes.MapRoute(
    "DefaultWithExtension",
    "{controller}.{extension}/{action}",
    new { controller = "Home", action = "Index", extension = "america" }
);
  

и затем:

 var extension = RequestContext.RouteData.GetRequiredString("extension");
  

Ответ №2:

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

 public ActionResult myaction(string extension)
  

Для этого по-прежнему требуется запись MapRoute, определенная выше.