为您的创建和插入操作使用单独的视图模型。如果您的验证规则有所不同,我认为不管怎样使用不同的模型都是值得的。
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