拥有:使用ASP.NET MVC 2,基于DataAnnotationsModel的服务器验证,以及使用jQuery进行客户端验证。我的模型中的任何内容都在客户端上使用基于jQuery的验证(jQuery.validate和MicrosoftMvcJQueryValidation.js)完美验证。
需要:在表单中添加其他HTML <input type="checkbox" id="terms" />
。我需要jQuery验证来要求检查此复选框并以某种方式将其与MVC自动控制的任何jQuery客户端脚本挂钩。是的,我知道它不会在服务器端验证,但我不需要或不想它。
似乎应该很简单,但我是MVC的新手,jQuery的初学者,我的搜索空白。
任何帮助将不胜感激!
答案 0 :(得分:1)
这是一个解决方案。它模仿mvc挂钩到jQuery验证的功能。所以有一个名为Accept的复选框,它不属于模型。该脚本必须在表单之后,并添加该字段的所有验证元数据。
<%
Html.EnableClientValidation(); %>
<% using(Html.BeginForm("Show"))
{ %>
<%= Html.EditorForModel() %>
<div class="editor-field">
<%= Html.CheckBox("Accept", new { @class = "required" })%>
<span class="field-validation-valid" id="Accept_validationMessage"></span>
</div>
<input type="submit" value="Submit" />
<%} %>
<script type="text/javascript">
window.mvcClientValidationMetadata[0].Fields.push({
FieldName: "Accept",
ReplaceValidationMessageContents: true,
ValidationMessageId: "Accept_validationMessage",
ValidationRules: [{ ErrorMessage: "The Accept field is required.", ValidationType: "required", ValidationParameters: {}}]
});
</script>
答案 1 :(得分:0)
我可能建议为每个View使用ViewModel(将所有数据注释放在那里)。然后,您可以为复选框创建布尔模型属性,并将其设置为必需。
从那里,如果您将模型发布回控制器,您只需使用AutoMapper将ViewModel映射到所需的模型,或者只是自己映射属性。
无论哪种方式,最好为每个视图使用ViewModel。请记住,ViewModel的工作是尝试包含视图中所需的所有内容。这绝对意味着它可以并且将拥有模型中不需要的其他数据。
答案 2 :(得分:0)
试试这个
$(document).ready(function() {
//// Assuming your form's ID is 'form0'
$("#form0").submit(function() {
if ($("#terms").attr('checked')) {
return true;
}
else
{
//// Error message if any
return false;
}
});
});