То, что вы спрашиваете, и то, что показывает ваш пример, это две разные вещи;в зависимости от того, какого из них вы хотите достичь, вам может потребоваться или не потребоваться выполнять какую-либо работу.
Для того, чтобы класс был контроллером в MVC Framework, существует два требования:
- У него должно быть имя класса Имя + "Контроллер"
- У него должен быть открытый конструктор без параметров.
Ваш пример "нормального" MVCмакет на самом деле недействителен:
MyMvcProject\Controllers\
MyController1.cs
MyController2.cs
MyController3.cs
Эти классы не будут найдены MVC, поскольку они не имеют правильного имени, независимо от того, в какой папке они находятся.
Если всевы хотите изменить имена пространств / папок, которые «просто работают», при условии, что вы называете их так же, как и соответствующие сегменты маршрута:
MyMvcProject\MyGroup1\
Page1Controller.cs
Page2Controller.cs
MyMvcProject\MyGroup2\
Page3Controller.cs
MyMvcProject\Areas\Area1\
Area1Page1Controller.cs
Это пошаговое руководство (написано для MVC 2, но работает так же хорошо в MVC3) показывает, как поддерживать Области с поведением контроллера по умолчанию.
Если вы действительно хотите назвать их SomethingController1
или SomethingElseController5
, или иначе изменитьмаршрут -> отображения имени класса, то вы до необходимо реализовать пользовательский ControllerFactory
и вставить его в конвейер MVC.
В Интернете есть множество примеров того, как это сделать, включая опубликованный ранее ,