2009-09-01 4 views
2

Я хочу иметь маршрут, который выглядит примерно так: www.abc.com/companyName/Controller/Action/Id Однако все названия компаний должны сопоставляться с теми же «базовыми» контроллерами, что касается имени , Мне нужно имя companyName для аутентификации.Маршруты тщеславия MVC?

Кроме того, если нет указанного имени компании, мне нужно сопоставить другой набор контроллеров.

Как это сделать? Я также ценю хороший ресурс маршрутизации, поэтому мне не нужно задавать такие вопросы.

ответ

4
routes.MapRoute(
    "CompanyRoute",           
    "{companyName}/{controller}/{action}/{id}",   
    new { controller = "MyBaseCompanyController", action = "Index", id = "" } 
); 

routes.MapRoute(
    "NoCompanyRoute", 
    "{controller}/{action}/{id}", 
    new {controller = "DifferentDefaultController", action = "Index", id = "" }); 

Маршрутизация - довольно сложная тема, но она хорошо покрыта Professional ASP.Net MVC 1.0. Для интернета-ресурсов, я хотел бы предложить starting here, а затем возвращается к переполнению стека;)

+0

Вот что я и думал. Однако всякий раз, когда я пытаюсь это сделать, я получаю ошибку «ресурс не найден». Я не знаю, почему это не соответствует моему маршруту. Есть идеи? –

+0

Попробуйте добавить значение по умолчанию для companyName: new {companyName = "", controller = "MyBaseCompanyController" ...} –

+0

Хм ... Мне, вероятно, придется увидеть код маршрутизации маршрута и ваш класс контроллера. Вы уверены, что ваш метод действия по умолчанию соответствует классу контроллера по умолчанию? – womp

0

Перейти к Global.asax.cs, и добавьте следующий маршрут в RegisterRoutes() метода перед «По умолчанию» маршрут:

routes.MapRoute(
    "Vanity",            // Route name 
    "{company}/{controller}/{action}/{id}",       // URL with parameters 
    new { company = "", controller = "Home", action = "Index", id = "" } // Parameter defaults 
); 
1

В случае если вы хотите разрешить ошибки, вызванные маршрутизацией. Я предлагаю следующий инструмент, который я считаю чрезвычайно полезным.

Route Debugger