c# - 如何在 asp.net 核心中将 DataAnnotations 从模型传输到 viewModel?
问题描述
在我的 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; }
}
解决方案
你没有。
视图模型和视图模型的注解是不同的。
对于视图模型,您需要处理视图数据注释的属性,而在底层模型中,您需要处理持久层的属性,通常与实体框架相关。
请注意,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; }
}
推荐阅读
- ros - 在 Ubuntu 16.04(4.4.0-131-generic)上运行 RealSense D435 时出错
- ms-access - 在 MS 访问中制作唯一记录
- c++ - 做 SFINAE 练习时出现编译错误
- javascript - 如何基于另一个事件执行广播 onchange 事件?
- ruby-on-rails - Rails 按列和组在表格中循环
- php - 没有得到多条记录导致foreach
- javascript - 剑道本地时间弹出编辑
- javascript - Laravel Dusk Javascript 确认()
- oauth - 雅虎oauth和oauth2.0登录故障
- java - 带有 SQLite 的多项选择测验应用程序(新活动中不显示分数)