爲您的創建和插入操作使用單獨的視圖模型。如果您的驗證規則有所不同,我認爲不管怎樣使用不同的模型都是值得的。
public class InsertMyObjectViewModel : IValidatable
{
[Required]
public string Name { get; set; }
// note the lack of Required attribute here
public string Address { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
...
}
}
再舉例來說,客戶的名稱在登記時,但不是他們的地址單獨進行編輯
public class UpdateMyObjectViewModel : IValidatable
{
[Required]
public string Name { get; set; }
[Required]
public string Address { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
...
}
}
這可能使意義,如果您的業務規則規定。但是,當用戶修改其帳戶時,您的業務規則可能需要一個地址。在很多情況下,爲每個對象使用1:1視圖模型:操作比率是有道理的。
現在,當你編寫你的Validate
邏輯時,它變得更簡單。可能會有一些重複,但是當您的業務規則在未來發生變化時更容易進行修改。
非常感謝! – AnonyMouse