Adr*_* K. 1 validation asp.net-mvc client-side-validation html.dropdownlistfor jquery-chosen
我的模型类包含所需的查找值,这是一个基于查找的记录:
[Required]
[DisplayName("Business Unit")]
public string value { get; set; }
[Required] //not working on client side?
[DisplayName("Business Group")]
public int id_businessgroup { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图:
<div class="editor-label">
@Html.LabelFor(model => model.value)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.value)
@Html.ValidationMessageFor(model => model.value)
</div>
<div class="editor-label">
@Html.LabelFor(x=>x.BusinessGroup.value)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.id_businessgroup, new SelectList(ViewBag.BusinessGroups,"id","value"),"Please select group from list...")
@Html.ValidationMessageFor(x => x.id_businessgroup)
</div>
@section scripts{
@Html.Partial("ScriptUseChosen")
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Create()
{
ViewBag.BusinessGroups = DB.BusinessGroups.Where(x => x.is_active).OrderBy(x => x.value).ToList();
return View();
}
Run Code Online (Sandbox Code Playgroud)
Web.config文件:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Run Code Online (Sandbox Code Playgroud)
BundleConfig.cs:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*",
"~/Scripts/jquery.unobtrusive*"));
Run Code Online (Sandbox Code Playgroud)
验证value在客户端完美运行,但它不适用于Chosen的下拉列表.可能是什么原因?
小智 10
jQuery Chosen通过使原始选择hidden(style="Display:none")来更新html .默认情况下,jquery.validate(1.9.0)忽略隐藏的元素.您可以使用覆盖默认值
$.validator.setDefaults({
ignore: []
});
Run Code Online (Sandbox Code Playgroud)
要么
$('form').validate({
ignore: []
});
Run Code Online (Sandbox Code Playgroud)