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