在ASP.NET MVC3你如何保持干爽与非常相似,但略有不同的ViewModels?(In ASP

2019-09-26 14:55发布

在构建应用程序,我们创建了一个通用对象模型来存储一些值,该视图模型看起来有点像这样的时刻:

public class FooViewModel {
    public int ID { get; set; }

    public byte FooType { get; set; }

    [Required]
    [Display(Name = "Bar Name")]
    public string Name { get; set; }

    [Required]
    public string Email { get; set; }

    //etc, etc
}

问题是:这取决于FooType,我们希望有显示名称是不同的,电子邮件不需要1型和2,但需要3型和4。

我们试图从分隔条件每种类型的不同在于,以从这个继承类的属性,但是验证确实对什么是基本类型指定一个备用的 ,所以没有工作。

目前,唯一的选择似乎是为每个FooType(以及单独的控制器和视图),从而导致大量的重复代码的视图模型。

有什么其他的方法来保持这种干?

Answer 1:

受益验证上下文(在不同的上下文如验证对象),我强烈建议使用FluentValidation库。



Answer 2:

你可以实现自定义RequiredIf验证属性 ,或者你可以实现IValidatableObject 。



文章来源: In ASP.NET MVC3 how do you stay DRY with very similar but slightly different viewmodels?