Скажите, у меня есть следующий маршрут:
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.
Я также вижу, что Фредрик упоминает атрибут [ControllerAction(DefaultAction = true)]
, но я не могу найти упоминание о нем нигде, кроме его блога (и мое приложение не будет компилироваться, когда я попробую его в своем контроллере) .