比方說,我得到了下面的實體框架 「Ruimte」 模式:ASP.NET MVC - 視圖模型驗證的最佳實踐
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視圖中,有兩個字段用於添加「Kenmerk」。現在,如果沒有KenmerkOptieId或Waarde,「Kenmerk」不能進入數據庫。因此,每次我嘗試發佈表單時,視圖都會因爲驗證而拒絕提交。雖然我想要一個「Ruimte」有或沒有「Kenmerk」。
所以我選擇的解決方案是使用「RuimteCreateViewModel」屬性「名稱」是必需的,另一個copmlex類名爲「KenmerkCreateViewModel」的列表。現在在這最後一個視圖模型中,KenmerkOptieId和Waarde不是必需的,所以我最終可以提交表單。
雖然我不認爲這是「跳過」所需字段驗證程序的最佳解決方案。那麼當數據庫驗證與視圖驗證不同時,你的「最佳實踐」是什麼?
您提供的鏈接看起來不錯,我會在接受問題之前進一步研究它們。感謝您的回覆,我會再回來告訴你,如果這是我正在尋找的。 – Julian