这似乎是一个非常基本的场景,但我认为它没有一个圆满的结局。
我有一个简单的项目类:
public class Project
{
[Required(ErrorMessage = "Project title is required")]
[DisplayName("Project Title")]
public string Title { get; set; }
[DisplayName("Related Categories")]
public Category Categories { get; set; }
}
我想确保至少选择了一个相关类别。如何在视图中使用 Html.EnableClientValidation() 和模型中的装饰器来验证这一点?如果这是不可能的,那么后备是什么?
同样令人沮丧,并且可能是验证的障碍是我做不到......
<%= Html.ListBoxFor(m => m.Project.Categories,
new SelectList(Model.Categories, "Id", "Name"))%>
...因为这将尝试将 Project.Categories 表单值(字符串数组)与应该是 Category 类型相关联,但不能(我收到错误“The parameter conversion from type 'System.String ' 键入失败,因为没有类型转换器可以在这些类型之间转换")。因此,我必须将表单名称更改为 m.Categories 之类的名称,从而与 Product 类分离,因此我想用任何验证逻辑来装饰它。
哇,对我来说这太疯狂了。我们不能使用 MVC2 装饰器验证一个简单的多选列表吗?