将DataAnnotations映射或复制到另一个类

时间:2014-12-18 12:15:49

标签: c# asp.net-mvc data-annotations

在我的项目中,我有2个班级。首先,客户作为域模型:

 public partial class kunden
{
    [Required(ErrorMessage = "Geben Sie bitte ihren Vornamen an.")]
    [MaxLength(200, ErrorMessage = "Bitte verwenden Sie weniger als 200 Zeichen.")]
    [MinLength(2, ErrorMessage = "Geben Sie bitte einen Vornamen ein der mehr als 2 Zeichen hat.")]
    [Display(Name = "Vorname", Description = "Ihr Vorname")]
    public string kunden_vorname { get; set; }


    [Required(ErrorMessage = "Geben Sie bitte ihren Nachnamen an.")]
    [MaxLength(200, ErrorMessage = "Bitte verwenden Sie weniger als 200 Zeichen.")]
    [MinLength(2, ErrorMessage = "Geben Sie bitte einen Nachnamen ein der mehr als 2 Zeichen hat.")]
    [Display(Name = "Nachname", Description = "Ihr Nachname")]
    public string kunden_nachname { get; set; }

    [DataType(DataType.Password)]
    [Required(ErrorMessage = "Geben Sie bitte ihr Passwort ein.")]
    [MinLength(7, ErrorMessage = "Bitte wählen Sie ein Passwort mit mindestens 7 Zeichen.")]
    [MaxLength(200, ErrorMessage = "Bitte verwenden Sie weniger als 200 Zeichen.")]
    [Display(Name = "Passwort", Description = "Ihr Passwort, Sie können es zur eindeutigen Identifikation ihres Accounts verwenden.")]
    public string kunden_passwort { get; set; }
}

第二个类是我的viewmodel:

public partial class KundenViewModel
{
    public string kunden_vorname { get; set; }

    public string kunden_nachname { get; set; }

    public string kunden_passwort { get; set; }
}

有没有办法映射/复制DataAnnotations?像这样:

Mapper.MapDataAnnotations<KundenViewModel, kunden>();

映射的类看起来如此:

     public class KundenViewModel
{
    [Required(ErrorMessage = "Geben Sie bitte ihren Vornamen an.")]
    [MaxLength(200, ErrorMessage = "Bitte verwenden Sie weniger als 200 Zeichen.")]
    [MinLength(2, ErrorMessage = "Geben Sie bitte einen Vornamen ein der mehr als 2 Zeichen hat.")]
    [Display(Name = "Vorname", Description = "Ihr Vorname")]
    public string kunden_vorname { get; set; }


    [Required(ErrorMessage = "Geben Sie bitte ihren Nachnamen an.")]
    [MaxLength(200, ErrorMessage = "Bitte verwenden Sie weniger als 200 Zeichen.")]
    [MinLength(2, ErrorMessage = "Geben Sie bitte einen Nachnamen ein der mehr als 2 Zeichen hat.")]
    [Display(Name = "Nachname", Description = "Ihr Nachname")]
    public string kunden_nachname { get; set; }

    [DataType(DataType.Password)]
    [Required(ErrorMessage = "Geben Sie bitte ihr Passwort ein.")]
    [MinLength(7, ErrorMessage = "Bitte wählen Sie ein Passwort mit mindestens 7 Zeichen.")]
    [MaxLength(200, ErrorMessage = "Bitte verwenden Sie weniger als 200 Zeichen.")]
    [Display(Name = "Passwort", Description = "Ihr Passwort, Sie können es zur eindeutigen Identifikation ihres Accounts verwenden.")]
    public string kunden_passwort { get; set; }
}

1 个答案:

答案 0 :(得分:2)

这不起作用 - AutoMapper仅复制值。需要在每个类上定义DataAnnotations,因为它们定义了额外的行为。减少代码重复的最简单方法是创建一个包含“Kunden”数据的类,让你的viewmodel继承它,只添加你需要的额外字段。