在使用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'只是因爲對我而言,在查看代碼時更容易理解。那和那是有效的方法。 :) –