MVC绕过客户端验证(“保存进度”与“提交”)

时间:2014-01-08 22:13:36

标签: jquery asp.net-mvc forms validation jquery-validate

我有一个表单,我希望能够在不验证的情况下保存,但在提交时验证。我在这个表单上有两个按钮可以保存或提交。

问题是:如果我使用“提交”按钮进行保存(然后切换控制器中的操作),jquery.validate将启动并且无法保存部分填写的表单。< / p>

如果我将其作为链接,我不知道如何将表单发布到控制器中的新操作。

以下是视图中的HTML:

<a class="btn  btn-default" data-placement="right" data-title="Save your progress." href="/Summary/Save/2" rel="tooltip"><i class="glyphicon glyphicon-floppy-disk"></i> Save Summary</a> 
<a class="btn  btn-default" confirm="Are you sure you want to revert to the previous saved copy? You will lose all changes since your last save." data-placement="right" data-title="Revert back to your last saved copy." href="/Summary/Revert/2" rel="tooltip"><i class="glyphicon glyphicon-remove"></i> Revert Changes</a> 
<button class="btn-default  btn btn-primary" confirm="This will submit the summary to the evaluator for review. No changes will be allowed unless the evaluator returns it. Are you sure?" type="submit">Submit Summary</button>

3 个答案:

答案 0 :(得分:3)

@ user2864740建议我暂时禁用jquery验证,这是个好主意 - 在jQuery Validation plugin: disable validation for specified submit buttons找到了一种方法

为方便起见,发布了答案:

您可以在提交按钮中添加取消的css类以禁止验证

e.g

<input class="cancel" type="submit" value="Save" />

答案 1 :(得分:2)

顺便说一句,根据Skipping validation on submit

上的文档,目前的答案已被弃用
  

要在仍使用提交按钮时跳过验证,请将属性"formnovalidate"添加到该输入:

     
<input type="submit" name="go" value="Submit">
<input type="submit" formnovalidate name="cancel" value="Cancel">
     

以前通过向输入中添加class="cancel"来工作,现在已弃用。

虽然从版本1.17开始,这两种方法仍然出现在source code

  

<强> ...blob/1.17.0/src/core.js#L34

     
// Allow suppressing validation by adding a cancel class to the submit button
if ( $( this ).hasClass( "cancel" ) ) {
    validator.cancelSubmit = true;
}

// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
    validator.cancelSubmit = true;
}

进一步阅读:jQuery Validation plugin: disable validation for specified submit buttons

答案 2 :(得分:0)

您可以通过在要禁用验证的按钮中添加 formnovalidate 属性来实现。

<input formnovalidate="formnovalidate" type="submit" value="Save" />