Скажем, у меня есть следующий маршрут:
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" });
Давайте также скажем, что мой контроллер имеет следующие методы: Index(Int32 id)
и Edit(Int32 id)
.
Итак, /MyController/Index/1
является допустимым URL для этого маршрута. Итак, /MyController/Edit/1
Однако, если получен URL-адрес, который правильно сопоставляется с моим контроллером, но не с существующим действием, как мне определить действие по умолчанию для выполнения вместо того, чтобы позволить MVC-инфраструктуре вызывать экран ошибки?
В принципе, мне бы хотелось, чтобы URL /MyController/Preview/1
и /MyController/Whatever/1
выполняли действие, которое я указываю раньше времени, когда токен {action} не может быть сопоставлен с существующим действием на моем контроллере.
Я вижу, что проект MvcContrib на Codeplex имеет атрибут, который позволяет использовать его с ConventionController, но я хотел бы сохранить это с помощью чистого MS ASP.NET MVC.
Я также вижу, что Fredrik упоминает атрибут [ControllerAction(DefaultAction = true)]
, но я не могу найти упоминания об этом нигде, кроме своего блога ( и мое приложение не будет компилироваться, когда я попробую его в своем контроллере).