在这种情况下,为什么 ASP.NET MVC 3 不启用客户端验证?
我正在尝试将不引人注目的客户端验证集成到我的 ASP.NET MVC 3 项目中,按照 布拉德·威尔逊的食谱。但是,它不会在渲染视图中启用。例如,我的 元素(即编辑器字段)未按规定接收
data-val
属性。
我已执行以下操作来启用不显眼的客户端验证:
Web.config
:
<configuration>
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
</configuration>
Options.cs
:
public class Options
{
// Annotate with validation rules, in order to generate client-side validation code
[Required, StringLength(60)]
public string Bugs = "";
}
_Layout.cshtml
:
<head>
<script src="@Url.Content("~/Scripts/jquery-1.6.2.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>
</head>
Options .cshtml
:
@model MyProject.Models.Options
<div id="options-form">
@Html.ValidationSummary(true)
<fieldset>
<legend>Options</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Bugs)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Bugs)
@Html.ValidationMessageFor(model => model.Bugs)
</div>
</fieldset>
</div>
为编辑器字段生成此 HTML:
<div class="editor-label">
<label for="Bugs">Bugs</label>
</div>
<div class="editor-field">
<input class="text-box single-line" id="Bugs" name="Bugs" type="text" value="" />
如您所见,没有 data-val
属性:(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您忘记使用
表单
。用Html.BeginForm
包围您的字段集,这将初始化
FormContext
并且您的输入将接收 data-val-* 验证属性You forgot to use
form
. Surround your fieldset withHtml.BeginForm
This will initialize
FormContext
and your inputs will receive data-val-* validation attributes