2012-04-05 5 views
1

제출하기 전에 양식 데이터를 "저장"할 수있게하려고합니다.MVC3 컨트롤러에서 UpdateModel을 호출하기 전에 유효성 검사를 비활성화하는 방법

사용자가 양식이 유효하지 않은 상태에서도 양식 진행 상황을 저장하고 나중에 다시 방문하도록 할 수 있습니다.

내 유일한 문제는 UpdateModel 메서드를 사용하여 모델을 업데이트 할 수있게하려는 것입니다. 그러나 양식이 잠재적으로 유효하지 않거나 부분적으로 만 완료되면 오류가 발생합니다.

SAVE 인스턴스에서 유효성 검사가 무시되는 다음 방법에 주석을 추가하는 방법이 있습니까?

[HttpPost] 
public ActionResult Save(Model values) 
{ 
var model = new Model(); 
UpdateModel(model); 
} 

저장되는 요소에 대해 1-1 매핑을 작성하지 않아도됩니다. 내 대체 옵션이지만 유지 관리가 쉽지 않습니다.

답변

1

TryUpdateModel(model)을 시도해보십시오. 필요한 것을 충족시켜야합니다.

예외가 발생하지 않으며 이고은 모델을 업데이트 한 다음 유효성 검사 오류가있는 경우 false을 반환합니다.

오류가 발생하는 경우 오류 인스턴스에서 ModelState을 확인하십시오.

[HttpPost] 
public ActionResult Save(Model values) 
{ 
var model = new Model(); 
TryUpdateModel(model); 

model.saveChanges(); 

} 
+0

감사 :

따라서, 당신은 변경 사항을 저장 항상 너무로 사용할 수 있습니다! 처음에는 TryUpdateModel (모델)이 false를 반환하고 아무 것도하지 않는다고 생각했습니다. 그러나 모델을 업데이트합니다. 그것이 제가 놓친 부분이었습니다. 본질적으로 모든 유효성 검사 오류를 억제하려면 TryUpdateModel에서 반환 값을 무시하면됩니다. 완전한! – dazbradbury

+0

클라이언트 측 유효성 검사를 사용하도록 설정 한 경우 양식을 제출할 수 없습니다. 그러나 "저장"버튼에 제출하기 전에 유효성 검사를 비활성화 할 수 있습니다. –

+0

@MystereMan - 그건 내가 이미 구현 한 것입니다. 간단히 아약스를 통해 양식을 제출하고 응답을 기반으로 시각적 피드백을 제공 할 수 있습니다. 이렇게하면 클라이언트 측 유효성 검사를 무시하고 매우 간단하게 양식을 저장할 수 있습니다. 유효성 검사는 데이터가 실제로 사용되기 전에 발생하며 주입 시도는 테스트 할 수 있습니다. – dazbradbury

관련 문제