Недавно я перешел с веб-форм на MVC 3 и пытался освоить маршруты MVC. У меня есть несколько странная проблема в том, что когда я получаю запрос к моему приложению (например, subdomain1.organisation.com или subdomain2.organisation.com), я хочу, чтобы маршрут по умолчанию использовался следующим образом:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Однако, когда моя заявка получает запрос через определенный поддомен, например, subdomain3.organisation.com, я хочу, чтобы приложение по умолчанию для определенного контроллера. Я был следующий код на:
http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx
что должно, что я хочу. Поэтому код в моем Global.asax выглядит следующим образом:
routes.Add("DomainRoute", new DomainRoute(
"subdomain3.organisation.com", // Domain with parameters
"{action}/{id}", // URL with parameters
new { controller = "Subdomain3Controller", action = "Index", id = "" }
));
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
При развертывании мое приложение работает правильно, когда запросы отправляются на subdomain3.organisation.com с использованием Subdomain3Controller. Однако при посещении любого другого субдомена, например, localhost / Subdomain3Controller / Index мое приложение, похоже, выбрало неправильный маршрут.
Похоже, что помощники моей формы возвращают неверное значение для:
ViewContext.Controller.ValueProvider.GetValue("controller").AttemptedValue
@using(Html.BeginForm(ViewContext.Controller.ValueProvider.GetValue("action").AttemptedValue, ViewContext.Controller.ValueProvider.GetValue("controller").AttemptedValue, FormMethod.Post, new Dictionary<string, object> {{ "id", "formid" } })){
Есть идеи, почему это может быть? Любой свет, который кто-либо мог бы пролить на этот вопрос, был бы очень признателен.
Большое спасибо заранее.