Применение MVVM к ASP.NET MVC. Как сделать сопоставление свойств? - PullRequest
1 голос
/ 18 октября 2011

Есть много статей об использовании паттерна MVVM для ASP .NET MVC.Например, это http://blogs.microsoft.co.il/blogs/helpercoil/archive/2010/08/28/asp-net-mvc-and-the-mvvm-pattern.aspx.

Для меня есть только один вопрос.У нас много моделей для одной модели.Как я могу заполнить свойства модели автоматически с помощью объекта viewModel?Как сделать автоматическое сопоставление свойств?

Я использую Entity Framework.

Например, у меня есть модель Test со следующими свойствами:

  • id
  • name
  • title
  • idUser
  • idCompany

Я сделал ViewModel для своей задачи.Эта ViewModel (TestUserViewModel) использует для простого пользователя следующие свойства: - id - name - title

Например, пользователь редактирует существующий тест.В результате мы имеем объект с типом TestUserViewModel.Я хочу:

  • синхронизировать объект модели и ViewModel.
  • сохранить значения по умолчанию для idCompany, idUser - для свойств, которые были исключены из текущей ViewModel.
  • использовать некоторые автоматические вещи - это может быть что-то вроде ApplyCurrentValues.Я действительно не хочу писать много следующего кода:

    modelObj.name=viewModelObj.name;
    modelObj.title=viewModelObj.title;
    

Использование System.Reflexion для этого тоже выглядит плохо.

Итак, каксделать это?

1 Ответ

2 голосов
/ 18 октября 2011

Если вы не хотите писать много кода сопоставления из одного объекта в другой, вам может понадобиться использовать такие инструменты сопоставления, как AutoMapper http://automapper.org/

Сказав, что, как указал @Darin Dimitrov, вам следует пересмотреть свою архитектуру. Если вы работаете с ASP.NET MVC, вы должны лучше познакомиться с MVC, а не с MVVM. Когда вы узнаете больше о том, как использовать MVC, вы начнете видеть использование "viewModels". Имейте в виду, что эти "viewModels" в MVC не имеют ничего общего с "VM" в "MVVM".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...