Вопрос о структуре проекта.Пока у меня есть 3 ViewComponents в приложении .NET Core.
На странице Microsoft о View Components они используют пространство имен ViewComponentSample.ViewComponents, но на практике движок ищет View Components в
- / Pages / Components / ProductBox / Default.cshtml
- / Pages / Shared / Components / ProductBox / Default.cshtml
- / Просмотры / Shared / Components / ProductBox / Default.cshtml
Что означает: создание папки ViewComponents рядом со страницами / представлениями / моделями не будет работать, поскольку она не найдет их.
Так что это означает, что я помещаю их в страницы/ Поделился, правильно?В то время как частичные представления начинаются с "_", я должен оставить это для ViewComponents?
В настоящее время я поместил его в Pages \ Shared \ ProductBox, с представлением в Pages \ Shared \ Components \ ProductBox \ Default.
Тогда остается еще 2 вопроса.Пространство имен и расположение модели.
Этот ProductBox должен находиться в пространстве имен MyWebsite.Pages.Shared или в пространстве имен MyWebsite.ViewComponents?
Что касается модели, я должен поместить ее в папку Modelsили рядом с View Component, так как это код, непосредственно связанный с ним?Мне не нравится разбивать компонент на 3 папки (ViewComponent, Components \ ProductBox и Models).Кажется немного странным, что там есть ProductBox, но это похоже на страницы, рядом с которыми есть свои модели.
И для модели, связанной с компонентом просмотра, пока у меня есть 3 компонента, которые используют свои модели совершенно по-разному.
- LatestArticlesViewComponent: класс RssItem определен как подкласс и возвращается их список.
- CoachingFormViewComponent: модель получает форму PageModel, а ViewComponent не делает ничего, кроме передачи модели страницы вView.
- ProductBoxViewComponent: model - это класс POCO, инициированный ViewComponent со свойствами отображения.
(сначала я передавал класс ViewComponent в качестве модели для представления, но этобыл запах кода, поэтому я изменил его, чтобы использовать отдельный класс модели)
Я делаю это правильно?Я сделал успехи, но хочу убедиться, что я на правильном пути.