在我的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; }
}
答案 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; }
}