Реализация модульного макета проекта asp.net mvc

Здесь под модульностью я подразумеваю такую ​​компоновку, основанную на функциях:

макет проекта

(Я читал об областях. И я не спрашиваю об областях)

Например, с помощью NancyFx это легко достигается. Что касается ASP.NET MVC, я попытался расширить стандарт RazorViewEngine, заменив его пути поиска представления. В результате были найдены представления, но статический контент, на который они ссылались, не может быть загружен (ошибка 404 с сообщением о том, что нет соответствующего контроллера, который бы соответствовал запросу для /assets/css/dashboard.css)

Я видел много сообщений, в которых люди реализовывали собственные механизмы просмотра, переопределяли методы CreateView, FindView, GetGeneralNameFrom и так далее. Но я не понимаю всех соглашений ASP.NET MVC.

Какие соглашения следует изменить, чтобы позволить контроллерам размещаться со своим кодом, связанным с функциями (сервисами, представлениями, моделями), в одной папке функций?

Я спрашиваю о внутреннем устройстве, которое мне нужно изменить / заменить / расширить.


person lexeme    schedule 22.12.2015    source источник


Ответы (1)


Вы не должны размещать свое представление вместе с файлами кода. В MVC у вас должны быть отдельные папки: Models, Controllers, Views. Механизм MVC ищет представления в папке Views.

В вашем случае в вашей Views папке должны быть подпапки Authentication и Dashboard. В каждую подпапку вы помещаете свои index страницы и другие страницы, относящиеся только к этой части приложения. Например, если у вас есть отдельный вид edit для редактирования панели инструментов, вы помещаете его в Views - Dashboard

То же самое и с классами контроллеров. У вас есть Controllers папка и подпапки Dashboard, Authentication. То же правило и для классов моделей.

Для всех .js файлов у вас должна быть папка Scripts, для всех правил css - Content папка

И вам не нужны ваши собственные ViewEngine для рендеринга страниц. Это необходимо только в том случае, если у вас есть не общие шаблоны или некоторые бизнес-требования.

person Andrew    schedule 22.12.2015
comment
Это стандартная архитектура MVC. У меня вопрос больше о том, как его сломать. Мой вопрос не в том, что фреймворк требует "из коробки", а во внутреннем устройстве фреймворка. - person lexeme; 22.12.2015
comment
Потому что он недостаточно гибкий. - person lexeme; 22.12.2015