Я использую метод, аналогичный статье, на которую вы ссылались: фильтр действий, который возвращает 404, если модель представления является нулевой. Я объединил его с инициатором настраиваемого действия (например, this ), чтобы мне не приходилось ставить атрибут filter на все.
Поскольку я упомянул об этом, есть несколько других типов действий, которые вы можете выполнить, если вы пойдете по маршруту фильтра действий. У меня есть / были фильтры, которые будут:
- Автоматическое перенаправление в индексное представление после успешного редактирования.
- Перенаправить на ту же страницу, если ModelState недействителен.
- Перенаправление на страницу отказа в доступе при возникновении исключения безопасности.
Я думаю о рефакторинге их в реестр конвенций, чтобы у меня было что-то вроде:
When.ModelIsNull.RedirectTo<SharedController>(c => c.NotFound());
For("Edit").ModelStateIsInvalid.Redisplay();
For("Edit").OnSuccess.RedirectTo("Index");
On<SecurityException>().RedirectTo<SharedController>(c => c.AccessDenied());
Тогда, если я хочу изменить то, как работает определенное поведение, я просто изменяю его в одном месте. Например, вместо перехода к «Индексу» я мог бы перенаправить в представление «Просмотр».
For("Edit").OnSuccess.RedirectTo("View");
Надеюсь, это даст вам некоторые идеи.
Редактировать: Здесь - это то, как можно сделать что-то подобное, используя FubuMVC (из которого я люблю красть идеи)