查看:
@Html.DropDownList("CategoryItems", null, new { @class = "ddlcs" }) @Html.ValidationMessage("CategoryItems")
控制器:
var cat = from s in db.CategoryDbSet where s.IsActive == true orderby s.CatName select new { s.CatID, s.CatName }; var catListItems = cat.ToList() .Select(c => new SelectListItem { Text = c.CatName, Value = c.CatID.ToString() }) .ToList(); catListItems.Insert(0, new SelectListItem { Text = "[--Select the category--]", Value = "" }); ViewBag.CategoryItems = catListItems;
当有人在保存操作期间选择"选择类别"选项时,我希望对下拉列表强制执行所需的验证.我是MVC框架的新手,我不确定我在哪里犯这个错误?此下拉列表与模型无关.
请提出解决方案.
此下拉列表与模型无关.
那是错误的.ASP.NET MVC中的验证通过使用相应属性修饰视图模型属性来工作.例如,如果要使此下拉列表成为必需,则可以使用该[Required]
属性修饰视图模型上的相应属性.
因此,为现有视图模型添加必要的属性:
public class MyViewModel { [Required] public int? SelectedCategoryId { get; set; } public IEnumerable<SelectListItem> Categories { get; set; } ... some other properties that your view might need }
然后在您的控制器操作中填充此视图模型:
var model = new MyViewModel(); model.Categories = cat .ToList() .Select(c => new SelectListItem { Text = c.CatName, Value = c.CatID.ToString() }).ToList(); return View(model);
并在您的视图中使用强类型版本的帮助程序:
@Html.DropDownListFor( x => x.SelectedCategoryId, Model.Categories, "[--Select the category--]", new { @class = "ddlcs" } ) @Html.ValidationMessageFor(x => x.SelectedCategoryId)