【问题标题】:Disable client-side validation in MVC 3 "cancel" submit button在 MVC 3“取消”提交按钮中禁用客户端验证
【发布时间】:2011-03-19 17:30:11
【问题描述】:

好的,已经尝试了几个小时,需要一些帮助。我正在尝试在 MVC 3 中实现一个具有“返回”和“下一步”按钮的页面。单击后退按钮时,我想禁用客户端 MVC 验证运行,以便我的操作方法将运行并将用户发送到上一个逻辑网页。我试过这个:

<script type="text/javascript">
  document.getElementById("backButton").disableValidation = true;
</script>

还有这个:

<input type="submit" name="backButton" value="← Back" 
 title="Go back to step 1." disableValidation="true" />

但无论如何,客户端验证 JavaScript 会启动,并且不会让按钮回发。我在想disableValidation 可能只适用于 MVC 2,我应该在 MVC 3 中做其他事情,但似乎找不到任何示例。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 validation client-side


    【解决方案1】:

    当你在某个地方发布问题时,这种神秘的力量会导致答案立即显现出来?

    看起来在 MVC 3 中,您通过向按钮添加“取消”类来禁用客户端验证。所以在我的例子中:

    <input type="submit" name="backButton" value="← Back"
     title="Go back to step 1." class="cancel" />
    

    效果很好。并且也不需要 ID 属性。如果按钮上有一个实际的样式类,只需这样做:

    <input type="submit" name="backButton" value="← Back"
     title="Go back to step 1." class="style-name cancel" />
    

    【讨论】:

    • 我怀疑“神秘力量”正在帮助你帮助他人。 :) 我遇到了类似的问题,你的解决方案很快就出现了。谢谢。 +1
    • 我已经听过很多次解释了,但我最喜欢“橡皮擦”。这是关于当您自己向他人解释问题时,您如何更好地理解问题。你解释得比你想象的更详细,所以它会让你更好地理解问题。一件好事是想一想,或者说出来,就好像你在向你想帮助你的人解释一样。你可能会找到答案。 “橡皮鸭”来自将橡皮鸭放在显示器上的人。然后他会告诉橡皮鸭他的问题,有时他会弄明白。
    • Wtf。我认为 MVC 的全部意义在于关注点分离。在这种情况下,这 NOT 到底是如何违反关注点分离的呢?使用 CSS 来实际影响视图的功能?我喜欢它的工作原理,但我觉得使用它很脏。
    • 仍然会暂时弹出客户端验证...不理想
    • 为了让它与 MVC 5 一起工作,我必须向按钮添加“formnovalidate”属性。请参阅jqueryvalidation.org/reference 搜索“在提交时跳过验证”
    【解决方案2】:

    我知道...非常老的问题..但是当我查看时它是搜索结果的顶部。

    对于 MVC 4(和一个 BUTTON),似乎(至少对我而言)答案只是添加 formnovalidate="formnovalidate"

     <button type="submit" class="btn btn-outline-success border-0" formnovalidate="formnovalidate" name="command" value="Back" title="Back">
        <span class="fas fa-arrow-left" aria-hidden="true"></span>
        &nbsp;Back
    </button>
    

    【讨论】:

      【解决方案3】:

      验证脚本似乎链接到提交类型input。通过将cancel 更改为按钮,将跳过验证:

      <button type="button" onclick="document.location.href('Index')">Cancel</button>
      

      【讨论】:

      • 不在 MVC 4 中。它的行为(至少对我而言)与按钮的输入方式相同。
      【解决方案4】:

      我用这个做按钮

      $("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;
              });
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-23
        • 1970-01-01
        • 2017-05-09
        • 2013-07-10
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多