내가 바보처럼 검색 한하지만 훨씬 똑똑하지 않습니다 ..MVC 2 검증 및 엔티티 프레임 워크
내가 엔티티 프레임 워크 4와 자신의 POCO 클래스를 사용하고 내가 확인을 위해 DataAnnotations
을 사용하고 싶습니다. 아무런 문제가 없습니다. 인터넷에서 내가하는 일에 대해 얼마나 많은 시간을 할애하고 있습니까? 그러나 ViewModels에서 유효성 검사를 대신 수행하고 내보기에서 내 POCO 클래스를 사용하여 데이터를 표시하지 않는 것이 가장 좋습니다. 어떻게해야합니까? 내 리포지토리가 내 POCO 클래스에서 obejekt를 반환하기 때문에 AutoMapper를 사용하여 모든 것을 작동 시키려고 시도했지만 ModelState.IsValid
에서 아무것도 업데이트하거나 변경하려고하면 항상 false가됩니다.
영어 실력이 정말 좋지 않습니다. 내가 대신 오늘을하고있는 중이 야 방법을 보여 내 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);
}
이제 데이터베이스 유효성 검사가 올바르게 작동하지만 데이터베이스를 보내고 업데이트하려고하면 값이 null 인 것으로 나타났습니다. 나는 이런 식으로 하나의 메인 뷰 모델을 보이는 것을 :
public class AstronomiGuidenModelItem<T> : AstronomiGuidenModel {
public T Item { get; set; }
}
왜 내 "UserViewModel 뷰 모델"널 다음 내가 편집하려고 r에?
'UserViewModel'은 'AstronomiGuidenModelItem'이어야합니다. –