2012-05-12 6 views
1

양식을 게시 할 때 호출되는 컨트롤러 업데이트 조치가 있습니다. 양식에 드롭 다운 필드의 가시성을 제어하는 ​​라디오 버튼이 있습니다 드롭 다운 필드가 표시되고 양식을 게시하면 데이터베이스가 올바르게 업데이트되고 ModelState가 유효합니다.왜 ModelState.IsValid = false가 표시됩니까?

드롭 다운 필드가 숨겨져 양식을 게시하면 게시되고 데이터베이스가 업데이트됩니다. 그러나 ModelState.IsValid = false이고 누락 값으로 누락이보고됩니다.

이 문제를 해결하는 방법은 무엇입니까?

[HttpPost] 
public ActionResult Update(ResponseModel model) 
{ 
    //ModelState.IsValid = false when dropdown field hidden 

    //validate form fields 
    //update database 

    //if we are here, then db update successful 
    AjaxResponse.AddJsonItem("msg", "Success"); 
    return Result(); 
} 
+0

공용 클래스 ResponseModel { public int Limit {get; 세트; } } – kheya

답변

2

그것은 당신의 ResponseModel가 [필수]와 같은 일부 데이터 주석 주석 속성을 가지고있을 수 있고 당신이 당신의 라디오 상자의 선택을 취소하면 속성 값을하지 않습니다.

상태가 유효하지 않은 경우 (디버거를 체크인하여) 모델을 게시하고 수신 한 값을 게시하십시오.


하나의 속성 만 있고 정수입니다. 정수는 널 값을 가질 수 없으므로 모델 상태가 유효하지 않습니다. 모델을 숨기면 모델에 int 속성 값이 없습니다. 드롭 다운을 라디오 상자의 숨겨진 필드로 바꾸거나 nullable int로 만드십시오.

+0

이미 확인했습니다. 공용 클래스 ResponseModel {public int Limit {get; 세트; }} – kheya

+0

그레이트 잡기 하산. 수정이 쉬웠다. 드롭 다운에서 기본 선택 값에 대한 값을 추가했습니다. – kheya

관련 문제