使用INotifyDataErrorInfo我在我的属性的setter中有验证方法,如果我更改字段值然后离开控件(更改焦点),setter被触发并且验证发生并且通知UI,但是使用那个界面,如果用户只是按下提交我怎样才能在asp.net中做类似于RequiredField的事情,我似乎无法在任何论坛或博客上找到明确的例子:(
我正在使用Silverlight 4 WCF RIA和mvvm-light工具包,就是这样。我希望我不要过于复杂化,因为它似乎应该如此简单,但似乎无法找到解决方案。
感谢您的所有帮助,建议和指示!!!
答案 0 :(得分:0)
最后找到了一个简单的解决方案...如果有人有更有效的方法,请告诉我:)
private void Validate() { ValidationContext validationContext = new ValidationContext(this, null, null); ICollection vr = new List(); Validator.TryValidateObject(this, validationContext, vr, true); if (vr.Count >= 1) { foreach (var item in vr) { ManageErrors(((string[])item.MemberNames)[0], new List() { item.ErrorMessage }, true); } } }
Manage Errors方法是Jesse Liberty所做的INotifyDataErrorInfo的简单实现here
现在任何方式在我的viewModel中调用我的submit方法(使用mvvm-light)我调用它并使用简单的dataAnnotations bam所有属性验证 即
[Required(ErrorMessage = "Is Required", AllowEmptyStrings = false)] public string SelectedStatus { get { return _selectedStatus; } set { _selectedStatus = value; RaisePropertyChanged("SelectedStatus"); } }
这不是最优雅的方式,但是...上帝我找不到任何人在提交时验证!?!?