Kar*_*ran 3 asp.net-mvc asp.net-mvc-4
查看:
@Html.DropDownList("CategoryItems", null, new { @class = "ddlcs" })
@Html.ValidationMessage("CategoryItems")
Run Code Online (Sandbox Code Playgroud)
控制器:
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;
Run Code Online (Sandbox Code Playgroud)
当有人在保存操作期间选择"选择类别"选项时,我希望对下拉列表强制执行所需的验证.我是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
}
Run Code Online (Sandbox Code Playgroud)
然后在您的控制器操作中填充此视图模型:
var model = new MyViewModel();
model.Categories = cat
.ToList()
.Select(c => new SelectListItem
{
Text = c.CatName,
Value = c.CatID.ToString()
}).ToList();
return View(model);
Run Code Online (Sandbox Code Playgroud)
并在您的视图中使用强类型版本的帮助程序:
@Html.DropDownListFor(
x => x.SelectedCategoryId,
Model.Categories,
"[--Select the category--]",
new { @class = "ddlcs" }
)
@Html.ValidationMessageFor(x => x.SelectedCategoryId)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7324 次 |
| 最近记录: |