【问题标题】:Dropdown validation fails in MVC 5MVC 5 中的下拉验证失败
【发布时间】:2015-01-29 07:45:48
【问题描述】:

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

[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);
                });

            });
        });

对我来说一切正常,但是此下拉菜单没有进行所需的验证。谁能指出我做错了什么?

【问题讨论】:

    标签: jquery asp.net-mvc validation razor


    【解决方案1】:

    您在 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 值的第一个选项。

    您还应该将该属性更改为可为空的int

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

    【讨论】:

    • 你的答案看起来是正确的,但很可能你错过了我的下拉列表现在没有填充的 javascript 代码中的某些内容:)
    • 抱歉,我在 '&lt;option 之前省略了 $( 并错过了右括号。现已更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多