这个解释有点棘手,所以我接受可能需要更多细节。
我正在研究一个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的验证吗?
答案 0 :(得分:0)
好的,我无法确切地解决我想要的问题,但是通过不绑定Object2s
属性解决了这个特殊问题。相反,我在控制器中选择了int[]
个选定的复选框,并使用它来填充Object2s
属性。