如何将这两个ViewModel合并为一个并为每个动作执行不同的验证(客户端和服务器)?保存草稿时不需要观察描述,但是在宣布时是这样。
public class SaveDraftViewModel
{
[Required]
public string Title {get;set;}
public string Description {get;set;}
}
public class AnnounceViewModel
{
[Required]
public string Title {get;set;}
[Required]
public string Description {get;set;}
}
答案 0 :(得分:0)
根据您如何区分两种类型的模型,您可以使用IValidatableObject执行以下操作:
public class CombinedViewModel : IValidatableObject
{
[Required]
public string Title {get; set;}
public string Description {get; set;}
public ViewModelType Type {get; set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();
if (Type == ViewModelType.Announce)
{
results.Add(new ValidationResult("Description is required.");
}
return results;
}
}
其中ViewModelType
是定义2种模型的枚举。