我正在使用MvcContrib Grid在页面上显示一个表格。我使用自定义列在表格上生成一个复选框,以便用户可以选择多行并提交表单。
除非至少选中了一个复选框,否则我不希望提交表单。我可以自己编写这个Javascript来强制执行验证,但我想知道如何使用MVC3提供的不显眼的库。
我想我只需要使用适当的类和属性设置我的输入,然后页面上的脚本(validate和validate.unobtrusive)应该选择它们并将它们标记为需要验证,但我无法进行到目前为止得到正确的组合。
以下是我目前正在生成的输入:
<input type="checkbox"
name="foo"
value="@item.foo"
class="input-validation-error"
data-val-required="Please select an option."
data-val="true" />
答案 0 :(得分:1)
尝试在项目上设置data-val属性,然后你必须告诉jQuery你有新内容通过以下方式重新解析表单:
$.validator.unobtrusive.parse($('#yourForm'));
其中form当然是对表单元素的引用。
还有这个很棒的帖子,jQuery有一些你可以调用的内部适配器: 来自http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2
jQuery.validator.unobtrusive.adapters.addSingleVal("notequalto", "otherproperty", "mynotequaltofunction")
答案 1 :(得分:1)
根据我的经验,显示客户端验证的一个常被忽视的错误是在页面上放置了一个Html.ValidationMessageFor(lambda)。
如果不这样做,将不会触发客户端验证以阻止表单提交和/或显示使用客户端注释生成的消息。
希望这有帮助。
答案 2 :(得分:0)
<div class="editor-field">
<input class="text-box single-line"
data-val="true" data-val-number="The field Qty Available must be a number."
data-val-range="The field Qty Available must be between 0 and 120."
data-val-range-max="120" data-val-range-min="0"
data-val-required="The Qty Available field is required."
id="QtyOnHand" name="QtyOnHand" type="text" value="12" />
<span class="field-validation-valid" data-valmsg-for="QtyOnHand"
data-valmsg-replace="true"></span>
</div>
在阅读上面的代码之后,数据模型注释和data-val- *属性之间的联系应该是清楚的,但是客户端验证关联的地方可能并不那么明显。打开\ Scripts \ jquery.validate.unobtrusive.js文件并搜索“data-val”。您将立即看到JavaScript使用data-val- ,input - 和field- * CSS类来显示/隐藏客户端上的验证消息。
以上摘自这篇伟大的article,您可能需要完整阅读。