2010-08-23 159 views
0

因此,我使用ViewModels將數據從/傳遞到我的MVC應用程序中的Web表單,這似乎是我讀過的推薦實踐。Asp.net MVC從ViewModel檢索模型對象

我的問題是,然後將ViewModel映射到實際的域實體的常規方法是什麼?

我猜我也許應該加上「GetObject的」方法對我的ViewModels所以我有這樣的:

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

這是正確的做法?看起來好像我以這種方式使用ViewModel爲自己創造了許多不必要的工作。

回答

1

假設你要綁定您的控件到Person對象的屬性中查看像這樣

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

你可以有以下方法只接受人模型

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

我我不知道我是否理解,或者我認爲你可能會忽略這一點。我不會將底層的Person對象暴露給前端。所有數據都作爲ViewModel中的格式化字符串數據(從Person實體創建)傳遞到前端。 – fearofawhackplanet 2010-08-23 11:59:51

+1

啊,是的,你可能會將View和Model之間的抽象抽象得太過分了。我更喜歡在ViewModels中包裝模型並將它們綁定到視圖的方法。它還允許我在View中驗證的模型上應用DataAnnotations。 – 2010-08-23 12:45:41