2010-08-23 2 views
0

Таким образом, я использую ViewModels для передачи данных из/в веб-формы в моем приложении MVC, поскольку, как представляется, рекомендуется использовать то, что я прочитал.Asp.net MVC извлекает объект модели из ViewModel

Мой вопрос в том, что является нормальным подходом к отображению ViewModel в фактический домен?

Я предполагаю, что я, вероятно, следует добавить метод «GetObject» моим ViewModels поэтому у меня есть что-то вроде:

[AcceptVerbs(HttpVerbs.Post)] 
public void CreatePerson(PersonViewModel model) 
{ 
    Person p = model.GetPerson(); 
    _repository.Save(p); 
} 

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

ответ

1

Предполагая, что вы связываете ваши элементы управления свойствами объекта Person в представлении, как так

<% Html.TextBoxFor(model => model.Person.Name) %> 

Вы можете иметь следующий метод, чтобы принять только лицо модели

[AcceptVerbs(HttpVerbs.Post)] 
public void CreatePerson([Bind(Prefix="Person")]Person person) 
{ 
    _repository.Save(person); 
} 
+0

I» я не уверен, что понимаю, или я думаю, что вам не хватает смысла. В любом случае я не подвергаю основной объект Person объекту до конца. Все данные передаются в/из front end в виде форматированных строковых данных в ViewModel (который создается из объекта Person). – fearofawhackplanet

+1

Ahh yea, вы можете взять абстракцию между View и Model слишком далеко. Я предпочитаю подход обертывания моделей в ViewModels и привязывание их к представлению. Это также позволяет мне применять DataAnnotations к модели, проверенной в представлении. –

Смежные вопросы