Я являюсь частью команды разработчиков, реализующей большое приложение. Приложение имеет несколько уровней, и мы хотели бы сделать организацию файлов максимально простой в обслуживании, а также следовать передовой практике.
Вот пример того, как это изложено в соответствии с соглашением MVC.
UIProject
- Controllers
- HomeController.cs
- ErrorController.cs
- PersonalInfoController.cs
- BaseController.cs
...
- Views
- Home
- Index.aspx
- Home1.aspx
- Home2.aspx
- PersonalInfo
- Step1.aspx
- Step2.aspx
- Step3.aspx
...
- Shared
Site.Master
Error.aspx
...
Тем не менее, мы поняли, что функциональность PersonalInfo выросла и действительно должна быть разбита на несколько контроллеров. Мы хотели бы организовать их в подпапке папки Controllers. Как то так:
Controllers
- HomeController.cs
- ErrorController.cs
- BaseController.cs
- PersonalInfo
- Step1Controller.cs
- Step2Controller.cs
- Step3Controller.cs
Это можно сделать, каждый из этих контроллеров будет находиться в пространстве имен PersonalInfo. Маршрут можно сопоставить с помощью аргумента пространства имен.
Реальная проблема заключается в том, чтобы заставить MVC найти связанный вид. Я нашел два способа обойти это. Один из них, clanmonroe.com , обрабатывает это, наследуя от базового контроллера, который указывает жестко закодированный путь просмотра. Другой, Стивен Вальтер , более просто предлагает указать путь к представлению при вызове к представлению.
Оба эти метода, похоже, работают, и я более неравнодушен к первому. Однако у них есть недостатки. Главным образом то, что мы сейчас больше не навязываем конвенцию. То есть Step1Controller.cs может иметь действие Index, но представление может называться foo.aspx.
В идеале нам нужен способ реализовать организованный подход с использованием нативного MVC, без изворотливых обходных путей. Существует ли установленный передовой опыт для подобных ситуаций или, по крайней мере, хорошая рекомендация?