我已經尋找像一個傻瓜,但沒有得到它要聰明得多..MVC 2的驗證和Entity Framework
在項目中,我使用實體框架4和POCO自己的類和我想用DataAnnotations
進行驗證。那裏沒問題,網上有多少時間關於我如何做。但是,我覺得最好在ViewModel中進行驗證,而不是讓我的視圖使用我的POCO類來顯示數據。 我應該如何順利地做到這一點?由於我的資料庫從我的POCO類返回obejekt我試圖用AutoMapper得到的一切工作,但是當我嘗試更新或更改任何ModelState.IsValid
是假所有的時間..
我的英語實在是太差了,嘗試表明我今天怎麼做,而不是: 我的POCO
public partial User {
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
我的視圖模型
public class UserViewModel {
public int Id { get; set; }
[Required(ErrorMessage = "Required")]
public string UserName { get; set; }
[Required(ErrorMessage = "Required")]
public string Password { get; set; }
}
控制器:
public ActionResult Edit(int id) {
User user = _userRepository.GetUser(id);
UserViewModel mappedUser = Mapper.Map<User, UserViewModel>(user);
AstronomiGuidenModelItem<UserViewModel> result = new AstronomiGuidenModelItem<UserViewModel> {
Item = mappedUser
};
return View(result);
}
[HttpPost]
public ActionResult Edit(UserViewModel viewModel) {
User user = _userRepository.GetUser(viewModel.Id);
Mapper.Map<UserViewModel, User>(viewModel, user);
if (ModelState.IsValid) {
_userRepository.EditUser(user);
return Redirect("/");
}
AstronomiGuidenModelItem<UserViewModel> result = new AstronomiGuidenModelItem<UserViewModel> {
Item = viewModel
};
return View(result);
}
我注意到現在我的驗證工作正常,但是當我嘗試發送和更新數據庫時,我的值爲空。我有一個看起來像這樣的主視圖模型:
public class AstronomiGuidenModelItem<T> : AstronomiGuidenModel {
public T Item { get; set; }
}
爲什麼[R我「UserViewModel視圖模型」空,然後我嘗試編輯?
我發現這個愚蠢的問題,'UserViewModel'應該是'AstronomiGuidenModelItem'。 –
2010-05-07 10:19:58