Как перенести DataAnnotations из модели в viewModel в ядре asp.net? - PullRequest
0 голосов
/ 26 ноября 2018

В моем проекте 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 голосов
/ 26 ноября 2018

Вы не делаете.

Аннотации для модели представления и модели представления различны.

Для модели представления вам нужны атрибуты, которые имеют дело с аннотацией данных представления.в то время как в базовой модели вам нужны атрибуты, которые имеют отношение к постоянному слою, обычно связанные с Entity Framework.

Обратите внимание, что 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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...