#asp.net-mvc #viewmodel #asp.net-core-webapi
#asp.net-mvc #viewmodel #asp.net-core-webapi
Вопрос:
вероятно, для вас это просто. Я просто немного запутался.
В принципе, у меня есть 2 отдельных проекта в рамках одного решения. Мой MVC и мой API. Мне было интересно узнать о сопоставлении модели представления и о том, как / где это происходит.
Насколько я понимаю, API вернет данные домена, сопоставит их с моделью представления и вернет в MVC. Означает ли это, что проектам API и MVC нужны одинаковые классы моделей представления? API должен иметь возможность, например, сопоставлять DomainModelA с ViewModelA и отправлять его в проект MVC.
Затем MVC необходимо будет принять объект ViewModelA, переданный из API. Однако, поскольку это отдельные проекты, проект MVC не «знает», что такое ViewModelA, пока я не создам идентичный класс для проекта MVC.
Это звучит как большое дублирование кода, поэтому я, без сомнения, что-то здесь недопонимаю.
Любая помощь приветствуется. Извините, если это глупый вопрос, но эй, я здесь, чтобы учиться: P
Я, вероятно, мог бы объяснить это лучше, если бы знал больше об этой теме.
Заранее спасибо.
Комментарии:
1. вы можете определить другой проект, который содержит общие классы, используемые как в api, так и в проекте mvc
2. Разве это не означает, что ни API, ни MVC не могут «видеть» классы ViewModel, поскольку они не находятся ни в одном из 2 проектов?
3. просто пример. проверки на стороне api разные, а на веб-стороне mvc, которую вы использовали, viewmodel имеет отдельную проверку. лучше использовать разные модели для api и web
4. Вы можете сослаться на общий проект (например, назовите его CommonModel). Что касается проверки, вы можете использовать fluentvalidation, который может быть интегрирован с asp.net mvc и api.
5. Как вы будете запрашивать веб-api у mvc, отправляя запрос? Если mvc и web api являются отдельными проектами, и вы не хотите предоставлять все модели из web api для просмотра, вам следует определить отдельную модель представления для сопоставления в них, даже если они могут иметь один и тот же класс.