Проблемы с проверкой данных в сервисах Silverlight 4 RIA - PullRequest
1 голос
/ 05 августа 2010

У меня есть проект служб Silverlight 4 RIA, над которым я работаю, и я не могу проверить ввод текста дочерней Windows.У меня есть текстовое поле, такое как это:

<TextBox Height="23" Name="txtSummary" Width="Auto" Grid.Row="2" Grid.Column="4" Text="{Binding DocumentView.Summary, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"/>

Значение DocumentView.Summary получается из моей модели представления:

public DocumentSubmittedView DocumentView
    {
        get { return _DocumentView; }
        set
        {
            if (_DocumentView != value)
            {
                _DocumentView = value;
                OnPropertyChanged("DocumentView");
            }
        }
    }

А DocumentSubmittedView - это собственный класс пользовательских объектов:

 namespace Data.Model.Entities {

public class DocumentSubmittedView {
    [Key]
    public int DocID { get; set; }

    [Required(ErrorMessage = "Summary Required")]
    public string Summary { get; set; }      
}

}

Есть ли какая-либо причина, по которой я не могу получить сообщение о проверке ошибки любого типа с вышеуказанной информацией?

Спасибо.

Ответы [ 3 ]

1 голос
/ 14 октября 2010

Если вы используете пользовательские объекты, которые не генерируются моей структурой сущностей или Linq2Sql, то добавьте логику проверки к ее установщикам, например:

[Range(0,1000)]  
[DataMember]  
public int Population  
{  
    get { return _population; }  
    set {  
        Validator.ValidateProperty(value, 
            new ValidationContext(this, null, null) 
                { MemberName = "Population" });  
        _population = value;  
        RaisePropertyChanged("Population");  
    }  
}  

и привязывайте флаги к элементу TextBox внутри вашего XAMLфайл:

<TextBox Text="{Binding Population,  
Mode=TwoWay, NotifyOnValidationError=True,ValidatesOnExceptions=True}" />
0 голосов
/ 16 сентября 2010

Привет, я не вижу полный код, но ... может быть, при создании объекта DocumentSubmittedView Сводка равна нулю.OnPropertyChanged срабатывает только при изменении Summary ... так как вы ничего не вводите, нет причин для изменения.Но если вы введете что-то, вы предоставили Сводку, а затем ваше правило валидации будет положительным, и нет причины для ошибки валидации.Что вы можете сделать, это ввести какой-то текст в Сводку, а затем удалить его ... И теперь вы можете увидеть, работает ли ваше правило ...

, но это всего лишь из головы, чтобы увидеть ваши несколькоlines ..

Это может помочь назначить string.Empty свойству Summary в конструкторе модели представления HTH

0 голосов
/ 05 августа 2010

С MSDN :

В настоящее время элемент управления DataGrid является единственным элементом управления, который автоматически применяет атрибуты проверки.Пример использования элемента управления DataGrid с классом, который содержит атрибуты проверки, см. В разделе «Пример таблицы данных» ниже.Если вы не используете элемент управления DataGrid, вы должны вручную проверить значения.

Если вы не используете DataGrid

Проверка значений вручную

Если вы не используете элемент управления DataGrid для предоставления интерфейса для редактирования данных, атрибуты проверки не применяются автоматически.Однако вы можете вручную применить тест проверки с помощью класса Validator.Вы можете вызвать метод ValidateProperty для метода доступа set свойства, чтобы проверить значение по атрибутам проверки для свойства.Вы также должны установить для свойств ValidatesOnExceptions и NotifyOnValidationError значение true, когда привязка данных получает исключения проверки из атрибутов проверки.Пример применения проверки вручную см. В Примере привязки данных ниже.

...