Я использую 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