繁体   English   中英

在MVC 5中下拉验证失败

[英]Dropdown validation fails in MVC 5

我的代码是这样的。 内部模型

[Required]
    public int ProcedureCategoryID { get; set; }
    public virtual ProcedureCategory ProcedureCategory { get; set; }

内部控制器

  ViewBag.ProcedureCategoryList = new SelectList(db.ProcedureCategories.Where(x => !x.IsMainCat),
            "ProcedureCategoryID", "Name");

在视图中(编辑)

     @Html.DropDownList("ProcedureCategoryID", (SelectList)ViewBag.ProcedureCategoryList, "--Select Sub Category--", new { @class = "form-control", @id = "SubCat" })
  @Html.ValidationMessageFor(model => model.ProcedureCategoryID)

并通过jquery这样动态添加此下拉数据

 $('#MainCat').change(function () {
            var selectedValue = $('#MainCat').val();
            $.post('@Url.Action("GetSubCategory", "Procedure")', { id: selectedValue }, function (data) {
                $("#SubCat").empty();
                var optionhtml1 = '<option value="' +
                0 + '">' + "--Select Sub Category--" + '</option>';
                $("#SubCat").append(optionhtml1);

                $.each(data, function (i) {
                    var optionhtml = '<option value="' +
                data[i].ProcedureCategoryID + '">' + data[i].Name + '</option>';
                    $("#SubCat").append(optionhtml);
                });

            });
        });

一切对我来说都很好,但是此下拉列表并未进行所需的验证。有人可以指出我做错了吗?

您在ajax调用中添加的第一个选项的值为0 ,该值是有效整数,因此它通过了验证。

改为使用

var select = $("#SubCat");
select.empty().append($('<option></option>').val('').text('--Select Sub Category--'));
$.each(data, function (index, item) {
  select.append($('<option></option>').val(item.ProcedureCategoryID).text(item.Name));
});

这将添加具有null值的第一个选项。

您还应该将属性更改为nullable int

[Required]
public int? ProcedureCategoryID { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM