Лучший способ справиться с переименованием контроллера - PullRequest
3 голосов
/ 21 августа 2011

Работая с ASP.NET MVC3, сайт находится в стадии бета-тестирования, и заказчик решил переименовать один из контроллеров.

http://domain.com/foo[/*] -> http://domain.com/bar[/*]

Какой самый простой способ обработки перенаправления, чтобы я не ломал закладки foo?

Ответы [ 3 ]

2 голосов
/ 21 августа 2011

Сохраняйте старый контроллер, чтобы старые URL-адреса работали.

Или добавьте правило перезаписи.Что-то вроде:

domain.com/foo(/[_0-9a-z-]+)

до:

domain.com/bar{R:1}

Перезапись URL в IIS http://technet.microsoft.com/en-us/library/ee215194(WS.10).aspx http://www.iis.net/download/URLRewrite

Если вы используете MVC.NET, вы, вероятно, уже имеетеURL Rewrite установлен.

2 голосов
/ 21 августа 2011

Другой вариант - зарегистрировать определенный маршрут для старого имени контроллера в Global.asax.cs.

routes.MapRoute(
    "RenamedController",                                              // Route name
    "[OldControllerName]/{action}/{id}",                           // URL with parameters
    new { controller = "[NewControllerName]", action = "Index", id = "" }  // Parameter defaults
);

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

0 голосов
/ 21 августа 2011

Перенаправление 302 было бы хорошо, если бы вы могли понять, как это сделать в IIS. Этот скриншот показывает, что не так уж трудно . Альтернативно, если вы используете Castle Windsor, вы можете зарегистрировать перехватчик , который использует HttpResponse.Redirect ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...