【发布时间】:2017-02-16 13:15:00
【问题描述】:
我有一个 ASP.NET 项目,它使用 jQuery.Validate 和 ASP.NET 构建的 unobtrusive wrapper 自动连接客户端验证。
a) 我肯定有合适的库:jquery.js, jquery.validate.js, & jquery.validate.unobtrusive.js
b) 并且 MVC 渲染引擎肯定是开启的(ClientValidationEnabled & UnobtrusiveJavaScriptEnabled 在 web.config 的 appSettings 部分)
这是一个简单的例子:
型号:
public class Person
{
[Required]
public string Name { get; set; }
}
控制器:
public ActionResult Edit()
{
Person p = new Person();
return View(p);
}
查看:
@model validation.Models.Person
@using (Html.BeginForm()) {
@Html.ValidationSummary(false)
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
}
这会生成以下客户端标记:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.1/jquery.validate.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js"></script>
<form action="/Person" method="post">
<div class="validation-summary-valid" data-valmsg-summary="true">
<ul><li style="display:none"></li></ul>
</div>
<label for="Name">Name</label>
<input data-val="true" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="" />
<input type="submit" value="Save" />
</form>
运行时它会执行客户端验证,注意到某些表单元素是无效的,但随后也回传到服务器。
为什么它不能阻止状态无效的表单的回发?
【问题讨论】:
标签: asp.net asp.net-mvc jquery-validate unobtrusive-validation