问题
OK, been trying things for hours and could use some help. I'm trying to implement a page in MVC 3 that has "back" and "next" buttons. When the back button is clicked I want to disable client-side MVC validation from running so that my action method will run and send the user to the previous logical web page. I've tried this:
<script type="text/javascript">
document.getElementById("backButton").disableValidation = true;
</script>
and this:
<input type="submit" name="backButton" value="← Back"
title="Go back to step 1." disableValidation="true" />
But no matter what, the cilent-side validation JavaScript kicks in and won't let the button do its post-back. I'm thinking that disableValidation
only works in MVC 2 perhaps, and I'm supposed to be doing something else in MVC 3, but cannot seem to find any examples.
回答1:
What is this mystical force that causes the answer to reveal itself as soon as you post a question somewhere?
It looks like in MVC 3 you disable client-side validation on a button by adding the class "cancel" to it. So in my example:
<input type="submit" name="backButton" value="← Back"
title="Go back to step 1." class="cancel" />
works great. And no ID attribute is needed either. If you have an actual style class on the button, just do this:
<input type="submit" name="backButton" value="← Back"
title="Go back to step 1." class="style-name cancel" />
回答2:
The validation scripts seem to be linked to the submit type input
. By changing cancel
to a button, validation is skipped:
<button type="button" onclick="document.location.href('Index')">Cancel</button>
回答3:
I use this for button
$("button").each(function (elem) {
var button = $($("button")[elem]);
button.addClass('cancel');
if (button.attr('type') == 'submit') {
button.click(function (e) {
var validator = button.closest('form').validate();
validator.cancelSubmit = true;
});
}
});
来源:https://stackoverflow.com/questions/5363624/disable-client-side-validation-in-mvc-3-cancel-submit-button