모델 바인딩을 사용하여 MVC에서 ASP.NET 프로필 설정을 편집하는 좋은 예가 있는지 궁금합니다. ASP.NET 모델 바인딩을 ProfileCommon
현재 내가 가진 : ProfileBase에서- 사용자 정의 ProfileCommon 클래스를 파생.
- (유형이 ProfileCommon 인) 강력한 유형의보기
- ProfileCommon 및 관련보기에서 작동하는 컨트롤러의 작업을 가져오고 게시하십시오. (아래 코드 참조).
프로필 세부 정보보기 - 양식이 모든 입력란이 올바르게 채워진 것처럼 보입니다.
그러나 양식을 저장하면 예외가 발생합니다. System.Configuration.SettingsPropertyNotFoundException : 설정 속성 'FullName'을 찾을 수 없습니다.
모델 바인딩이 httpcontext 중 하나를 잡는 대신 ProfileCommon 클래스 자체를 인스턴스화하기 때문에이 점을 고려해야합니다. 또한 프로파일이 수정 될 때 자동으로 프로파일을 저장한다고 생각하므로 저장이 중복 될 수 있습니다. 권리?
어쨌든, 현재 나의 생각은 모델 바인딩을 위해 별도의 Profile 클래스를 생성해야하지만, 이미 매우 유사한 클래스가있을 때 약간 중복되는 것처럼 보입니다.
어딘가에 좋은 예가 있습니까? 그것의 기본에 따라 유형의 새 인스턴스를 생성 : -
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit()
{
return View(HttpContext.Profile);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(ProfileCommon p)
{
if (ModelState.IsValid)
{
p.Save();
return RedirectToAction("Index", "Home");
}
else
{
return View(p);
}
}
감사합니다 마크, 내가 그 아마 일 것이라고 생각하지만 난이 잘못된 방법을 시도하는 것 같아 :
이 ProfileBinder를 사용하려면 다음과 같이 당신의 편집 컨트롤러 액션에 추가 할 수 있습니다 . 문제는 ProfileCommon 클래스에 대한 유효성 검사가 실패한 경우 변경 사항이 이미 적용되어 더티로 표시되고 어쨌든 작성된 것입니다. 나는 ProfileCommon 클래스에 적용 할 유효성 검사 논리와 메서드가있는 두 번째 유사한 클래스 (ProfileEdit)를 사용하여이 문제를 해결했습니다. 더 많은 코드가 있지만 멋지게 분리되어 작동합니다. –