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);
});
});
});
我觉得一切正常,但是没有进行所需的验证dropdown.Can有人指出我做错了什么吗?
您在 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; }
我的代码是这样的。 内部模型
[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);
});
});
});
我觉得一切正常,但是没有进行所需的验证dropdown.Can有人指出我做错了什么吗?
您在 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; }