2015-11-25 5 views
0

Я хотел бы перенаправить пользователей на действие по умолчанию для каждого контроллера.ASP MVC 4 действие по умолчанию для каждого контроллера

Скажем, у меня есть: Controller1, Controller2 ... У каждого есть несколько действительных действия: Action1, Мотор2, .... Так действительные URL-адреса выглядят как эти:

домен/controller1/

домен/controller1/действие1/

домен/controller1/action2/

домен/controller2/действие1/

и так далее.

Прямо сейчас, если я тип: домена/controller1/{любой строки} Я получаю сообщение об ошибке 404. Я хочу, чтобы перенаправить пользователей на домен/controller1/действие1 всякий раз, когда они печатают домен/controller1/{любую строку} или даже домена /controller1/{string1}/{} STRING2 .. .. и сохранить ошибку 404 для других случаев (когда контроллер не соответствует).

ответ

2

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

routes.MapRoute(
     name: "Default", 
     url: "controller1/{action}/", 
     defaults: new { action = "Index" } 
    ); 

Извините, если синтаксис неверен.

0

Маршрут карты, на который вы смотрите, немного сложнее. Если мы возьмем простой маршрут карты «domain/controller1/{any string}», это может легко отобразить на любой URL-адрес, включая действительные действия (анимирование может быть action2 правильно?). Поэтому для того, чтобы отображение выбрало правильное действие, вам нужно было бы создать конкретный маршрут карты для каждого действительного действия и добавить общий маршрут карты, который перенаправил бы все другие URL-адреса на «action1», например, код ниже.

  routes.MapRoute(name: "map1", url: "controller1/action1", defaults: new 
      { 
       action = "action1", 
       controller = "controller1" 
      }); 

      routes.MapRoute(name: "map2", url: "controller1/action2", defaults: new 
      { 
       action = "action2", 
       controller = "controller1" 
      }); 

      routes.MapRoute(name: "map3", url: "controller1/{anystring}", defaults: new 
      { 
       action = "action1", 
       controller = "controller1", 
       anystring = UrlParameter.Optional 
      }); 

Это самый лучший способ, которым я могу думать ...