2012-07-09 2 views
3

난 MVC 3 응용 프로그램에 눈에 띄지 않는 유효성 검사가 있습니다. 보기 중 하나에서 현재 <form action=''>..</form> 그리고 거기에 두 개의 버튼이 있습니다. 첫 번째 버튼은 'action1'에 양식을 제출하고 두 번째 버튼은 'action2'에 제출합니다. 첫 번째 경우 양식을 확인해야하지만 두 번째 경우에는 유효성 검사없이 게시 할 필요가 있습니다. 현재 모델은 두 경우 모두 유효성을 검사합니다.눈에 거슬리지없는 유효성 검사 런타임을 끕니까?

답변

2

내가 답을 발견했다. '조치 2'에 유효성 검사를 사용하지 않으려면 내가 컨트롤러에서 다음 방법으로 실행할 수 있습니다

ModelState.Clear(); 

와보기를

Html.EnableClientValidation(false); 
1

Asp.net MVC를 수행 한 지 오래 되었습니까?이게 당신이 찾고있는 것입니까?

1) 컨트롤러의 행동에 ModelState.IsValid를 사용하지 마십시오 :

@if(false) { // Replace false with your model property 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
} 
1

당신은 몇 가지 옵션이있다. action1에서 Form의 유효성을 검사하는 javascript 메서드를 실행합니다. 양식이 유효한 경우 양식을 제출하십시오. action2에서는 ModelState.IsValid를 사용하지 않으므로 양식을 제출하면 컨트롤러 작업이 실행됩니다.

2) 컨트롤러 동작에서 ModelState.IsValid를 사용하십시오. 두 개의 제출 버튼의 이름을 같은 이름으로 지정합니다 (예 : 'SubmitButton'). 각각의 제출 단추 값으로 'action1'및 'action2'를 지정하십시오. SubmitButton을 문자열 매개 변수로 Controller 액션에 전달하십시오. SubmitButton = 'action1'이면 ModelState.IsValid를 쿼리합니다. 그렇지 않으면 ModelState.IsValid를 쿼리하지 않습니다.

옵션 2 코드

컨트롤러 :

[HttpPost] 
public ActionResult SomeAction(ModelObject theModel, string SubmitButton) 
{ 
    if (SubmitButton== 'Action1') 
    { 
     if(ModelState.IsValid) 
     { 
      //do some work 
     } 
     else 
     { 
      return(View(theModel)); 
     } 

    } 
    else //action2 has ben used to submit, so don't vaildate 
    { 
     //do some work 
    } 
} 

보기 :

<input type="submit" id="action1" name="SubmitButton" value="Action1"/> 
<input type="submit" id="action2" name="SubmitButton" value="Action2"/> 
관련 문제