jQuery Chosen下拉验证客户端站点不起作用

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)