Подтвердить что ты не робот

Добавление представлений в подпапки в 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

Есть ли способ создать представления в той же подпапке, что и для контроллеров и моделей? спасибо!

4b9b3361

Ответ 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, который задает пути поиска, где вы хотите.

Ответ 4

Вид назван по имени Controller, вы должны следовать правилу.
Если вы хотите создать Views/Admin/Create, то ваш CustomerController.cs должен быть назван AdminController.cs.