RIA Services Decimal Обязательное поле Не вызывает ошибку проверки - PullRequest
0 голосов
/ 09 июня 2011

Я использую Silverlight 4 со службами RIA. Я создал службу домена в веб-приложении, используя EDMX. Для одной таблицы сущностей у меня есть десятичное поле с именем UnitPrice и аннотированное в метаданных следующим образом:

[Required(ErrorMessage="Price is required.",AllowEmptyStrings = false)]
[Range(typeof(decimal), "1", "1000",
      ErrorMessage = "Price must be between {1} and {2}")]
public decimal UnitPrice { get; set; }

На моем клиенте у меня есть страница для вставки новых записей, и поле связано следующим образом:

<TextBox  Grid.Column="1" Grid.Row="4" Name="txtPrice" 
          Text="{Binding Path=UnitPrice, Mode=TwoWay, NotifyOnValidationError=true,
          ValidatesOnExceptions=True, ValidatesOnDataErrors=True,
          TargetNullValue='Price', StringFormat=\{0:c\}}" />

В кнопке сохранения на странице у меня есть следующее:

if (newItem.HasValidationErrors)
{
    MessageBox.Show("please fix errors");
}
else
{
    try
    {
        db.SubmitChanges();
        EditWindow.Close();
    }
    catch (Exception ex)
    {

    }
}

Когда я иду, чтобы добавить новую запись, если я ввожу значение для цены за единицу как что-то вне диапазона, такое как -10, я получаю правильное сообщение проверки, и контекст домена не пытается обновить базу данных.

Моя проблема в том, что если я не введу какое-либо значение для Unitprice, проверка не появится, и контекст данных попытается обновить базу данных и приведет к ошибке неисключенного исключения

Может ли кто-нибудь предложить способ отображения сообщения проверки, как это происходит с проверкой диапазона, или мне нужно вручную проверить правильность поля UnitPrice и отобразить окно сообщения при возникновении ошибки?

Спасибо

Mark

1 Ответ

0 голосов
/ 09 июня 2011

Я думаю, что эта проблема связана с этим свойством привязки TargetNullValue='Price'.Это указывает, что значение «Цена» используется, если источник является нулевым.Попробуйте удалить его, чтобы увидеть, решит ли это проблему.

Надеюсь, это поможет:)

...