在使用ReactiveUI
时执行数据验证时,什么被视为“最佳实践”?比方说,我有一个看起来像这样的视图模型:ReactiveUI和验证
public class MyViewModel: ReactiveObject
{
public ReactiveAsyncCommand SaveMyDataCommand { get; protected set; }
private string _email;
public string Email
{
get { return _email; }
set
{
_email = value;
raisePropertyChanged("Email");
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
_name= value;
raisePropertyChanged("Name");
}
}
private bool _sendEmail = false;
public bool SendEmail
{
get { return _sendEmail; }
set
{
_sendEmail = value;
raisePropertyChanged("SendEmail");
}
}
public MyViewModel()
{
SaveMyDataCommand = new ReactiveAsyncCommand(null, 1);
}
}
这是我想验证什么:
- 如果
SendEmail == true
然后确保有一个在电子邮件属性有效的电子邮件地址。 (我并不担心实际的电子邮件地址验证部分本身,这只是一个如果情况如何。) - 如果将值设置为
Email
属性,请确保它是有效的电子邮件地址。 - 如果1.或2.验证失败,
SaveMyDataCommand
应该不可执行。
我只是寻找一个很好的例子,说明如何使用ReactiveUI做简单/稍微复杂的数据验证。任何人都可以对此有所了解吗?
感谢您的示例...出于好奇你知道是否有理由使用ValidateViaMethod而不是CustomValidationAttribute?还是仅仅是个人喜好? CustomValidationAttribute非常好,因为你可以用你想要的消息返回一个validationresult,所以看起来更容易从那里概括你的错误消息。我意识到你也可以使用一个资源的消息。但我只是好奇,除了个人喜好之外,还有什么原因可以使用另一个... –
@PureWeen我使用'ValidatesViaMethod'只是因为对我而言,在查看代码时更容易理解。那和那是有效的方法。 :) –