MVC3无法将模型设计与验证相匹配

时间:2012-07-17 13:19:44

标签: asp.net-mvc-3

这个解释有点棘手,所以我接受可能需要更多细节。

我正在研究一个MVC3项目。我有两个具有多对多关系的对象,所以我按如下方式设计了模型:

Object1

int ID
IEnumerable<Object2> Object2s

Object2的

int ID
[Required]
string Name
IEnumerable<Object1> Objects1s

然后我想使用表单更新Object1,这包括Object2s中每个Object2的复选框列表。如果应从Object2中删除Object2,将检查这些内容。该视图类似于以下内容:

@Html.EditorFor(c => c.ID)

if (Model.Object2s.Count() > 0)
{
    @Html.EditorFor(c => c.Object2s)
}

注意 - c.Object2s的EditorFor是一个自定义的EditorTemplate。

我遇到的问题是服务器端验证启动时报告错误,因为每个Object2对象都没有设置其Name属性。 Name属性对我来说不重要,只是为了更新Object1。

使用IEnumerable<Object>而不是IEnumerable<int>定义对象时出错了吗?

还有另一种方法可以阻止Object2的验证吗?

1 个答案:

答案 0 :(得分:0)

好的,我无法确切地解决我想要的问题,但是通过不绑定Object2s属性解决了这个特殊问题。相反,我在控制器中选择了int[]个选定的复选框,并使用它来填充Object2s属性。