У меня есть вкладка в моем приложении, при нажатии на которую данные пользователя отображаются (с использованием атрибута HTML-заполнителя) для него внутри редактируемых текстовых полей. Пользователь может просто просмотреть их или отредактировать любую деталь, которую он хочет.

Теперь мой вопрос: следует ли мне создать класс модели представления для этого сценария или следует использовать фактический класс модели учетной записи? Я предполагаю, что мне придется создать класс модели представления, поскольку мне потребуются только «некоторые» свойства из класса модели учетной записи, но если я сделаю это, как я сделаю его «редактируемым» и впоследствии сопоставлю отредактированные свойства (если есть ) к фактическому классу модели Account?

Кроме того, скажите, где именно мне нужно сохранить класс модели представления, если мне нужно его создать.

0
A Biz 9 Апр 2013 в 10:01

1 ответ

Лучший ответ

я должен создать класс модели представления для этого сценария или я должен использовать фактический класс модели учетной записи?

Да, лучше всего создать модель, представляющую нужное вам действие, и вы сделаете это, чтобы предотвратить недостаточную и чрезмерную публикацию. Итак, вы работаете над объектами, над которыми, как вы ожидаете, будут работать пользователи. Например, если у вас есть AccountModel, у которого много свойств, и вам нужно работать только с десятью из них в действии add и пятью его свойствами в действии edit, затем вы создаете две модели просмотра:

// your model or entity
public class AccountModel {
    // the list of properties goes here
}
// your view models
public class CreateAccountModel {
    public string Username {get;set;}    
    public string Password {get;set;}
    public string Phone {get;set;}
}
// this model is for the scenario 
// where you want users to edit their basic info
// but not the password (e.g. you have a separate
// functionality for changing the password)
public class EditAccountModel {
    public string Username {get;set;}    
    public string Phone {get;set;}
}

Теперь, чтобы сопоставить ваши модели представления с вашей реальной моделью или объектом, вы можете использовать инструменты сопоставления или сделать это самостоятельно (утомительно, но вариант для небольших моделей). Вот шаги:

  • Вы получаете модель / объект из сообщения
  • Вы запрашиваете свою сущность из своей базы данных
  • Вы копируете значения из модели представления в модель / объект
  • Вы сохраняете модель / объект обратно в свою базу данных

где именно мне нужно хранить класс модели представления

Вы можете разместить его в своем проекте MVC в созданной папке Models. На самом деле это скорее предпочтение, и стандартного способа сделать это нет, особенно если вы начинаете разбивать свое приложение на слои. Положите его куда-нибудь, где будет больше смысла.

0
von v. 9 Апр 2013 в 10:15
Большое спасибо за столь подробный и оперативный ответ! Что касается использования инструментов картографирования (поскольку я новичок и никогда ими не пользовался), у меня есть вопрос: предположим, что моя модель представления имеет 5 свойств, а фактическая модель имеет, скажем, 10, как инструмент сопоставления решит эту проблему? Будет ли инструмент автоматически пропускать свойства, НЕ ЯВЛЯЮЩИЕСЯ частью модели представления?
 – 
A Biz
9 Апр 2013 в 10:20
Пожалуйста. Да, он его пропустит, оформить заказ.
 – 
von v.
9 Апр 2013 в 10:29