如果需要父类,则需要属性

时间:2012-11-08 17:01:23

标签: asp.net-mvc-3 data-annotations modelstate

我遇到MVC3模型验证和DataAnnotations

的问题

我有以下课程:

public class A
{
    public C SomeProperty {get;set;}
}

public class B
{
    [Required]
    public C SomeProperty {get;set;}
}
public class C
{
    [Required]
    public string SomeSubProperty {get;set;}
}

这是因为某些对象可能需要C而其他对象不需要,但如果需要C,我也需要SomeSubProperty。

然而,当我在我的控制器中调用ModelState.IsValid时,如果未设置SomeSubProperty,则在将A和B都用作模型时将返回false。有什么方法可以产生这种行为吗?

2 个答案:

答案 0 :(得分:2)

我通常不会将“域模型”与“视图模型”混合使用。

域模型反映了业务关系,它可能非常复杂,而视图模型假设非常扁平,并且没有深层次的依赖关系,因此您可以使用注释。

答案 1 :(得分:1)

看看AutoMapper。定义每个ViewModel及其特定要求,并在验证成功后将其映射到域模型以进行处理。