2011-11-22 116 views
1

我正在遇到一个ASP.NET MVC 3 ListBox验证奇怪的问题,如标题中所述。基本上,我有一个列表在我的viewmodel,我绑定到一个列表框启用多个选择。ASP.NET MVC 3列表框验证

列表被赋予一个属性[必需]。当我提交选择单个值的表单时,它通过了验证,没有打嗝。但是,多于一个,验证就会失败。

有什么想法?

回答

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> 
} 

如果没有在列表中选择任何项目显示的验证错误信息。如果选择一个或多个项目,则验证通过,并且不显示错误消息。

+0

哎呀,我想我找到了问题。对不起,发布。我实际上有另一个验证属性[Integer],它携带与Required相同的ErrorMessage。 –