假设我得到了以下实体框架“Ruimte”模型:
public class Ruimte
{
#region Constructor
public Ruimte()
{
Kenmerken = new List<Kenmerk>();
}
#endregion
#region Properties
[Key]
public int Id
{
get;
set;
}
[Required]
public string Naam
{
get;
set;
}
public List<Kenmerk> Kenmerken
{
get;
set;
}
#endregion
}
“Kenmerk”模型如下所示:
public class Kenmerk
{
#region Properties
[Key]
public int Id { get; set; }
public KenmerkOptie KenmerkOptie
{
get;
set;
}
[Required]
public int KenmerkOptieId
{
get;
set;
}
[Required]
public string Waarde
{
get;
set;
}
[Required]
public int RuimteId
{
get;
set;
}
#endregion
}
在我的 Ruimte/Create 视图中,有 2 个字段用于添加“Kenmerk”。现在,如果没有 KenmerkOptieId 或 Waarde,“Kenmerk”就无法进入数据库。因此,由于验证,每次我尝试发布表单时,视图都会拒绝提交。虽然我希望“Ruimte”拥有或不拥有“Kenmerk”。
因此,我采用的解决方案是拥有一个具有所需属性“名称”的“RuimteCreateViewModel”以及另一个名为“KenmerkCreateViewModel”的 coplex 类的列表。现在在最后一个视图模型中,不需要 KenmerkOptieId 和 Waarde,所以我终于可以提交表单了。
尽管我认为这不是“跳过”所需字段验证器的最佳解决方案。那么当数据库验证与视图验证不同时,您的“最佳实践”是什么?