一个简单的必填字段验证器真的很复杂吗?

时间:2011-04-20 20:57:38

标签: validation silverlight-4.0 mvvm mvvm-light wcf-ria-services

使用INotifyDataErrorInfo我在我的属性的setter中有验证方法,如果我更改字段值然后离开控件(更改焦点),setter被触发并且验证发生并且通知UI,但是使用那个界面,如果用户只是按下提交我怎样才能在asp.net中做类似于RequiredField的事情,我似乎无法在任何论坛或博客上找到明确的例子:(

我正在使用Silverlight 4 WCF RIA和mvvm-light工具包,就是这样。我希望我不要过于复杂化,因为它似乎应该如此简单,但似乎无法找到解决方案。

感谢您的所有帮助,建议和指示!!!

1 个答案:

答案 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");
            }
        }

这不是最优雅的方式,但是...上帝我找不到任何人在提交时验证!?!?