ASP.NET MVC 3 ListBox验证

Mr.*_* 笑哥 1 validation listbox model-binding asp.net-mvc-3

我正在经历ASP.NET MVC 3 ListBox验证的一个奇怪问题,正如标题中所述.基本上,我在我的viewmodel中有一个List,它绑定到一个启用了多个选择的ListBox.

List被赋予一个属性[Required].当我提交选择了单个值的表单时,它会通过验证而不会出现打嗝.但是,如果不止一个,验证将失败.

有什么想法吗?

Dar*_*rov 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
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return View(model);
    }
}
Run Code Online (Sandbox Code Playgroud)

视图:

@model MyViewModel

@using (Html.BeginForm())
{
    @Html.ListBoxFor(x => x.SelectedItems, Model.Items)
    @Html.ValidationMessageFor(x => x.SelectedItems)
    <button type="submit">OK</button>
}
Run Code Online (Sandbox Code Playgroud)

如果未选择列表中的任何项目,则会按预期显示验证错误消息.如果选择一个或多个项目,验证将通过,并且不会显示任何错误消息.