我正在遇到一个奇怪的问题,即ASP.NET MVC 3 ListBox验证,正如标题中所述。基本上,我在我的viewmodel中有一个List,它绑定到一个启用了多个选择的ListBox。
列表被赋予一个属性[必需]。当我提交选择了单个值的表单时,它会通过验证而不会出现打嗝。但是,如果不止一个,验证将失败。
有什么想法吗?
答案 0 :(得分:5)
很奇怪,我无法重现您的问题。
型号:
public class MyViewModel
{
[Required(ErrorMessage = "Please select at least one item")]
public string[] SelectedItems { get; set; }
public IEnumerable<SelectListItem> Items
{
get
{
return Enumerable.Range(1, 5).Select(x => new SelectListItem
{
Value = x.ToString(),
Text = "item " + x
});
}
}
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
查看:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.ListBoxFor(x => x.SelectedItems, Model.Items)
@Html.ValidationMessageFor(x => x.SelectedItems)
<button type="submit">OK</button>
}
如果未选择列表中的任何项目,则会按预期显示验证错误消息。如果选择一个或多个项目,验证将通过,并且不会显示任何错误消息。