0
我有一個視圖模型如何驗證MVC5中繼承的View Model?
public class BaseFilter
{
public virtual string Field1 { get; set; }
public virtual DateTime? Field2 { get; set; }
public virtual string Field3 { get; set; }
}
public class TestFilter : BaseFilter, IValidatableObject
{
[Required]
public override string Field3 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext context)
{
// Validation logic..
}
}
在我看來,我現在用的TestFilter在特定視圖。
@model MyReportSite.Models.TestFilter
但是,當我張貼在我的視圖中沒有我的驗證正在發生。
如何在繼承的ViewModel上使用驗證(DataAtrributes和IValidatableObject)?
編輯:澄清在控制器中我看到我的ViewModel字段開始填充,但缺少驗證。即必填字段未被強制執行,等等......
當你說沒有驗證發生時,你的意思是沒有調用Validate()方法嗎?如果是這樣,可能是因爲驗證一個或多個字段或綁定失敗。驗證在幾個階段中工作,在IValidatableObject上調用Validate()方法取決於綁定和驗證屬性傳遞驗證規則。 – Luke
Validate()方法未被調用。另外如果我用[Required]裝飾繼承類的屬性也被忽略。 – PrivateJoker
好的。你發佈什麼數據到你的動作?它是否在帶有Field3字段的頁面上?該字段是空的,你正在提交表單?另外,你如何驗證你的屬性上的Required屬性被忽略? – Luke