在MVC 3"取消"提交按钮中禁用客户端验证

Gle*_*ten 54 validation asp.net-mvc client-side asp.net-mvc-3

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

<script type="text/javascript">
  document.getElementById("backButton").disableValidation = true;
</script>
Run Code Online (Sandbox Code Playgroud)

还有这个:

<input type="submit" name="backButton" value="? Back" 
 title="Go back to step 1." disableValidation="true" />
Run Code Online (Sandbox Code Playgroud)

但无论如何,静音端验证JavaScript都会启动,并且不会让按钮执行回发操作.我认为这可能disableValidation仅适用于MVC 2,我应该在MVC 3中做其他事情,但似乎无法找到任何示例.

Gle*_*ten 125

一旦你在某个地方发布问题,这种神秘的力量会导致答案显露出来?

在MVC 3中,您可以通过向其添加类"cancel"来禁用按钮上的客户端验证.所以在我的例子中:

<input type="submit" name="backButton" value="? Back"
 title="Go back to step 1." class="cancel" />
Run Code Online (Sandbox Code Playgroud)

效果很好.并且也不需要ID属性.如果按钮上有实际的样式类,只需执行以下操作:

<input type="submit" name="backButton" value="? Back"
 title="Go back to step 1." class="style-name cancel" />
Run Code Online (Sandbox Code Playgroud)

  • 跆拳道.我认为MVC的重点是分离关注点.在这种情况下,如何做到这一点*不*违反了关注点的分离?使用CSS实际影响视图的功能?我喜欢它有效,但我觉得使用它很脏. (9认同)
  • 为了使它与MVC 5一起使用,我必须在按钮上添加"formnovalidate"属性.请参阅http://jqueryvalidation.org/reference/搜索"提交时跳过验证" (9认同)
  • 我听过多次解释,但我最喜欢"橡皮鸭".这是关于当你自己向别人解释问题时,你如何更好地理解问题.你用比你想象的更精细的细节来解释它,所以它可以让你更好地理解这个问题.一件好事是想到它,或者说出来,好像你正在向想要帮助你的人解释它.你可能会找到答案."橡皮鸭"来自于在显示器上放置橡皮鸭的人.然后他告诉橡皮鸭他的问题,有时会弄清楚. (6认同)
  • 我怀疑"mystcal force"正在帮助你帮助别人.:)我遇到了类似的问题,你的解决方案很快就出现了.谢谢.+1 (3认同)

da_*_*ker 5

我知道......很老的问题......然而,当我查看时,它是搜索结果的顶部。

对于 MVC 4(和一个按钮),似乎(至少对我来说)答案只是添加 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>
Run Code Online (Sandbox Code Playgroud)