ASP.NET MVC - ViewModels для редактирования

Это обычно - хорошая практика, чтобы иметь и модели представления и редактирования для приложения MVC? Значение, я не хотел бы атрибутов проверки на модели представления, так как это в основном только для чтения.

6
задан DaveRandom 25 February 2013 в 22:52
поделиться

5 ответов

В ViewModel может быть свойство ReadOnly (boolean). На основе этого свойства можно отобразить соответствующее представление.

0
ответ дан 17 December 2019 в 18:11
поделиться

, вы можете использовать свою модель для редактирования. Вы привязываете редактируемые атрибуты к представлению, а остальные остаются такими же, даже если кто-то подделывал ввод.

public ActionResult Update([Bind(Include=”First, Last”)]User user)

Это гарантирует, что вы получите только поля First и Last named.

Возможно, вы пропустили это, но не отображаете редактируемые входные данные для нередактируемых атрибутов модели.

0
ответ дан 17 December 2019 в 18:11
поделиться

Если ваши представления являются представлениями CRUD, имеет смысл использовать одну и ту же модель представления. В представлении только для чтения атрибуты проверки будут игнорироваться, поскольку вы не вводите форму. Как только вы откажетесь от CRUD, у вас будет гораздо больше вариантов структурирования виртуальных машин. У меня есть ситуации, когда поле можно установить только во время вставки. В этом случае я использую одну и ту же виртуальную машину для рендеринга экранов добавления, только для чтения и обновления (с DisplayFor и InputFor в самом представлении html), но у меня разные модели ввода в методах действий Insert и Update.

1
ответ дан 17 December 2019 в 18:11
поделиться

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

Когда я впервые начал создавать ViewModels, я создавал эти действительно абстрактные ViewModels, в которые я пытался применить кучу бизнес-логики, но затем я понял, что в большинстве случаев данные, которые я пытался показать в каждом случае, были полностью разные и повторное использование не работает. Поэтому я просто начал разбивать свои ViewModels на очень мелкие части, которые используются один раз. Пока это работает хорошо.

Большую часть своей бизнес-логики я теперь стараюсь сохранить в модели, а не в модели представления. В моем случае моя модель представляет собой модель структуры сущностей, и я помещаю бизнес-логику в частичные классы, свисающие с моих объектов БД.

2
ответ дан 17 December 2019 в 18:11
поделиться

Я думаю, что вы неправильно понимаете цель разделения представления и модели в паттерне управления моделью и представлением.

Представление - это определение того, как пользователь будет видеть данные, т.е. как будет выглядеть веб-страница.

Модель определяет данные, которые будут использоваться, т.е. содержимое, которое будет отображаться в представлении.

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

Но я вообще против разделения просмотра и редактирования данных на две веб-страницы. Сегодня с ajax я бы просто сделал это на одной веб-странице.

0
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: