Добавление представлений в подпапки в ASP.NET MVC 3
Я работаю над проектом ASP.NET MVC 3. Я хочу разделить контроллеры, модели и представления в подпапках для простоты. Я могу сделать это с помощью контроллеров и моделей, но когда я создаю представление, оно автоматически создается в корневую папку Views
, есть ли способ решить эту проблему?
например. Я могу создать
класс модели как,
Models/Finance/Bank.cs
Models/Finance/Finance.cs
Models/Production/Production.cs
как,
Controllers/Finance/BankController/Create
Controllers/Finance/BudgetController/Create
Controllers/Production/ProcessController/Create
но когда я попытался создать представление для вышеуказанных действий, он создает в,
Views/Bank/Create.aspx
Views/Budget/Create.aspx
Views/Process/Create.aspx
Я хочу, чтобы это было так:
Views/Finance/Bank/Create.aspx
Views/Finance/Budget/Create.aspx
Views/Prodution/Process/Create.aspx
Есть ли способ создать представления в той же подпапке, что и для контроллеров и моделей? спасибо!
Ответы
Ответ 1
следующие шаги работали для меня,
-
Создайте подпапки, как вы хотите, в Views
(корневая папка). в моем случае это были Финансы и Производство.
-
Просто перетащите автоматически созданные папки в Views
в соответствующие подпапки. в моем случае Bank
и Budget
в Finance
и Process
в Production
-
Пока вы возвращаете представление из действия контроллера, дайте полный путь просмотра, как
return
View("~/Views/Finance/Bank/Create.aspx")
return
View("~/Views/Finance/Budget/Create.aspx")
return
View("~/Views/Production/Process/Create.aspx")
Ответ 2
Модели и контроллеры - это скомпилированные исходные файлы. Они собираются в DLL, и поэтому они могут быть буквально помещены в любом месте проекта, и это не изменит ситуацию. Эти классы не имеют понятия об их местоположении в файловой системе, потому что они не существуют в файловой системе после компиляции.
Представления, с другой стороны, разные. Это текстовые файлы, которые развертываются на сервере, загружаются и анализируются во время выполнения, поэтому структура должна знать, где их найти.
Инструментарий всегда будет создавать представления в папке ~\Views\Controller (или ~ Areas\AreaName\Controller). После этого вы можете перемещать их в любом месте, но вам придется передать весь путь к пути к методу View() (включая .cshtml). Или вам придется реализовать пользовательский ViewEngine, который задает пути поиска, где вы хотите.
Ответ 3
Для будущих посетителей: используйте области.
Пошаговое руководство. Организация приложения ASP.NET MVC с использованием областей
Ответ 4
Вид назван по имени Controller, вы должны следовать правилу.
Если вы хотите создать Views/Admin/Create
, то ваш CustomerController.cs
должен быть назван AdminController.cs
.