如何在ASP.NET Core中将DataAnnotations从模型传输到ViewModel?

时间:2018-11-26 10:27:53

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

在我的ASP.NET Core项目中,如何在不复制的情况下将DataAnnotation属性从Subject传输到SubjectViewModel?

public class Subject
{
    public int Id { get; set; }

    [Required(ErrorMessage = "Name is Required")]
    [MaxLength(200, ErrorMessage = "Name MaxLength is 200")]
    public string Name { get; set; }

    public string Description { get; set; }
}

public class SubjectViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

1 个答案:

答案 0 :(得分:0)

你没有。

视图模型和视图模型的注释不同。

对于视图模型,您需要用于处理视图数据注释的属性,而在基础模型中,您需要用于处理持久性层(通常与实体框架相关)的属性。

请注意,EF需要MaxLength属性,而ASP.NET Core MVC需要StringLength属性。

[Table("Subjects")]
public class Subject
{
    [Key]
    public int Id { get; set; }

    [Required]
    [MaxLength(200]
    public string Name { get; set; }

    public string Description { get; set; }

    [NotMapped]
    public string Foo { get; set; }
}

public class SubjectViewModel
{
    public int Id { get; set; }

    [Display(Name = "Full name")]
    [Required(ErrorMessage = "Name is required")]
    [StringLength(200, ErrorMessage = "Name MaxLength is 200")]
    public string Name { get; set; }

    [AllowHtml]
    [DataType(DataType.Multiline)]
    public string Description { get; set; }
}