我想知道是否有一种方法可以添加验证器,其中需要在组合框中选择作者,否则会显示错误。
在我的应用程序中,我有三个模型,书籍,作者和连接表Rel_Book_Author。
public class Book
{
[Key]
[Display(Name = "Id")]
[Column("book_id")]
public int book_id { get; set; }
[Display(Name = "Title")]
[Column("liv_title")]
[Required(ErrorMessage = "Every book needs a title")]
public string liv_title { get; set; }
}
public class Author
{
[Key]
[Display(Name = "Id")]
[Column("aut_id")]
public int aut_id { get; set; }
[Display(Name = "Author's Name")]
[Column("aut_name")]
public string aut_name { get; set; }
public ICollection<Rel_Book_Author> BookAuthors { get; set; }
}
public class Rel_Book_Author
{
[Column("hla_aut_id")]
public int aut_id { get; set; }
public Author Author { get; set; }
[Column("hla_book_id")]
public int book_id { get; set; }
public Book Book { get; set; }
}
答案 0 :(得分:0)
我在这里假设您的视图的模型将是Rel_Book_Author
类,或者是这些类的列表,因此您的视图将显示一本书(或多本书),并允许用户选择每本书的清单上是作者?
如果是,则验证应该有效as per any other model with data annotations。
EF Core does not perform any validations itself,它希望您确实已经使用client-side validation并在服务器上(通常在控制器中)验证了对象,因此这些对象与特定对象相关联关系的类型(例如,多对多)在这里无关紧要。
存在one gotcha to watch out for,其Required
属性为整数;也就是说,不可为空的整数(显然)不能为null,它将默认为零,这意味着设置Required
实际上不会返回选择列表中整数的验证错误(因为属性的值始终为零或列表中选择的值)。
要解决这个问题,请将aut_id
属性声明为可空(int?
):
[Required]
public int? aut_id { get; set; }
或添加Range
属性,例如
[Range(1, int.MaxValue)]
public int? aut_id { get; set; }