这已经被问过并回答了100次,而且我已经阅读了所有内容,但在验证失败后我的表格仍然提交了。我找到了一个不使用高于1.9.0的jquery.validate的引用,所以我回滚到那个(一直使用1.11),但没有改变。
如果我提交的表格无效(没有填写),则会显示错误消息,然后表单会提交。
我过去已经成功实施了几次验证,但我看不出这次有什么不同。我需要休息一下,不要撞我的头,希望一双新鲜的眼睛可以看到一些东西。
- 脚本:
<script src="@Url.Content("~/Scripts/jquery-1.9.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.10.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
型号:
[Display(Name = "First Name *")]
[StringLength(20)]
[Required(ErrorMessage = "Required.")]
public string FirstName { get; set; }
[Remote("CheckDuplicatePerson", "Validation", AdditionalFields = "FirstName", ErrorMessage="Person Exists")]
[Display(Name = "Last Name *")]
[StringLength(30)]
[Required(ErrorMessage = "Required.")]
public string LastName { get; set; }
查看:
<div class="PersonForm">
@using (Html.BeginForm("AddPerson", "Person", FormMethod.Post))
{ @Html.ValidationSummary(true)
<div id="editor-left">
<div class="formGroup">
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName) <br />
@Html.ValidationMessageFor(model => model.FirstName)
</div>
</div>
<div class="formGroup">
<div class="editor-label">
@Html.LabelFor(model => model.MiddleName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MiddleName)
</div>
</div>
<div class="formGroup">
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LastName) <br />
@Html.ValidationMessageFor(model => model.LastName)
</div>
</div>
<div class="controls"><hr />
<input type="submit" class="skbutton" value="Next Page" />
</div>
}
</div>
更新:
在这段代码中获取jquery 1.9.1文件中的JS错误:
parseJSON: function( data ) {
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}
答案 0 :(得分:1)
终于搞定了。
@Jerad,我尝试删除远程验证,没有帮助。
原来这是微软不显眼的脚本。我更新了它,它开始工作。所有这些东西似乎都有很好的依赖性。以下是我正在使用的版本:
的jquery-1.9.1
jquery.unobtrusive-ajax - 3.1.1
jquery.validate - 1.11.1
jquery.validate.unobtrusive - 3.1.1
感谢大家的投入。
答案 1 :(得分:0)
我有类似的问题。为每个输入字段设置@ Html.ValidationMessageFor(model =&gt; model.FieldName)以某种方式修复了问题