#silverlight #service #ria
#silverlight #Обслуживание #ria
Вопрос:
Я использую 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, и отобразить окно сообщения, если возникает ошибка?
Спасибо
Отметить
Ответ №1:
Я думаю, что эта проблема связана с этим свойством привязки TargetNullValue='Price'
. Это указывает, что значение ‘Price’ используется, если источник равен null. Попробуйте удалить его, чтобы посмотреть, решит ли это проблему.
Надеюсь, это поможет 🙂
Комментарии:
1. Спасибо, но я это уже пробовал. Даже если оно оставлено пустым, это вызывает проблему