PetsName이라는 속성이있는 클래스가 있다고 가정 해 보겠습니다. 화면에 아무 것도 표시되지 않으면 값 공급자를 업데이트하려고합니다. 사용자가 애완 동물 이름을 입력하지 않으면 강제로 '이름이 없습니다'. 이것은 실제 시나리오가 아닙니다. 물론 이것은 샘플이기 때문에 '웹 페이지에서 기본값을 설정하는 등'은이 시나리오에 맞지 않습니다.)TryUpdateModel 이전 값 공급자 업데이트
주요 문제는 업데이트하고 싶습니다. 값은 모델을 업데이트 할 때 오버라이드 한 것을 사용합니다. 한 가지 생각은 값을 제거하고 추가하는 것입니다. ModelState를 확인할 때 업데이트 된 값이 있지만 TryUpdateModel을 호출하면 값이 업데이트되지 않습니다. Im이 아래에서하고있는 일이 참으로 정확하고 여기에 또 다른 문제가 있습니다. 그러나 나는 이것을 먼저 시도 할 것이라고 생각했습니다. 감사! 무대 뒤에서
//Sample case:
[HttpPost]
public ActionResult Edit(PetOwner petOwner)
{
//If pets name is not set, force to "Unknown"
if(petOwner.PetsName=="")
{
//Tried this too ModelState.Remove("PetsName");
//ModelState.Add("PetsName", new ModelState());
ModelState["PetsName"].Value = new ValueProviderResult("Unnamed", "Unnamed", CultureInfo.CurrentCulture);
}
//Get the record/relationships from DB to merge with ModelState
PetOwner petOwnerToSave = from o in ctx.PetOwners where o.PetOwnerId == petOwner.PetOwnerId select o;
TryUpdateModel(petOwnerToSave);
//Save petOwnerToSave
}
그리고 후 리디렉션이-받기 ModelState.Clear()'를 사용하여 헬퍼의 가정을 당신이 우회 의미 "세부 사항"에 의해;'. 그 링크에 대해 정말 고마워, 아약스 게시 이후에 오류가 발생하는 이유를 파악하는 데 문제가있었습니다. 다른 조언 (here : http://stackoverflow.com/a/5906396/1026459)은 부분 뷰에서 유효성 검사 마크 업을 올바르게 얻는 방법을 보여주는 점에서 실제로 이것과 잘 어울립니다. @ {if (ViewContext.FormContext == null) {ViewContext.FormContext = 새 FormContext();}'. 감사! :) –