我已经寻找像一个傻瓜,但没有得到它要聪明得多..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