#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, определенная выше.