Как структурировать приложение ASP.NET MVC, используя индивидуальную организацию вместо артефакта? - PullRequest
10 голосов
/ 10 февраля 2012

Хотелось бы узнать, как можно структурировать веб-приложение, используя одну папку для каждой функции (клиенты, заказы) вместо одной папки для каждого типа артефакта (контроллеры, представления); кажется, это гораздо лучший способ организации больших проектов с большим количеством функций, но я не могу найти информацию об этом.

Я не думаю, что использование областей было бы решением, поскольку использование одной области для каждой функции потребовало бы создания большого количества вложенных папок.

Я думаю, что то, что я хочу сделать, должно быть возможно путем настройки реализации IViewEngine, но я не уверен в этом.

Кто-нибудь пытался это сделать?

Ответы [ 2 ]

3 голосов
/ 24 января 2017

Вы можете создать корневую папку компонентов, создать одну папку для каждой из ваших функций и общую папку внутри нее. Затем вы можете добавить все файлы (контроллеры, модели, представления, скрипты), связанные с одной функцией, в ее папку. Если несколько функций используют один и тот же файл, вы можете поместить его в общую папку. Вот как может выглядеть структура проекта:

- App
  - Features
    - Orders
      - OrdersController.cs
      - Create.cshtml
      - Create.js
      - CreateModel.cs
      - Edit.cshtml
      - Edit.js
      - EditModel.cs
      - EditViewModel.cs
      ...
    - Customers
      ...
    - Shared
      - _Layout.cshtml
      - Error.cshtml
    - _ViewStart.cshtml
    - Web.config
  - FeatureViewLocationRazorViewEngine.cs
  ...
  - Web.config

Чтобы использовать Razor с этой структурой папок, вам нужно создать новый класс механизма представления, унаследованный от RazorViewEngine, установить правильные ViewLocationFormats, MasterLocationFormats, PartialViewLocationFormats и добавить экземпляр механизма представления в ViewEngines.Engines коллекция. Для примера реализации и его использования проверьте ПАПКИ ОСОБЕННОСТЕЙ В ASP.NET MVC статья Тимом Томасом.

Если вы хотите использовать классы типа Scripts в своих представлениях, вам также необходимо импортировать их пространства имен. Один из способов сделать это - скопировать файл Web.config из старой папки Views в папку Features. Для других опций отметьте Как импортировать пространство имен на странице просмотра Razor? вопрос.

Для получения дополнительной информации проверьте следующие статьи:

2 голосов
/ 10 февраля 2012

Вы можете изменить местоположение, где хранятся представления, если хотите. Например, http://weblogs.asp.net/imranbaloch/archive/2011/06/27/view-engine-with-dynamic-view-location.asp.

ASP.NET MVC легко разрабатывается из-за философии соглашения о конфигурации. Если вы действительно хотите изменить эти соглашения, вы можете; тем не менее, вы обнаружите, что делаете намного больше кодирования. Например, строительные леса не будут работать с вашей конфигурацией.

Почему бы просто не создать логическое разделение внутри папок артефактов? Итак, внутри вашей папки Models есть папка для ViewModels и папка для DataModels. Внутри папки DataModels создайте папки для различных подмножеств моделей (Клиенты, Заказы и т. Д.). Просто мои 2 цента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...