2010-12-21 2 views
0

Как настроить проверку аннотации данных для этого сценария.Аннотации данных MVC для проверки типа данных

Я получаю эту ошибку:

The value 'Select Province' is not valid for Province.

Я хочу это, как этот

Please select a country

Мои ViewModel выглядит следующим образом:

[DisplayName("Province")] 
    [UIHint("ProvinceDropDown")] 
    public long? ProvinceId { get; set; } 

My View является список выбора:

<select name="ProvinceId" id="ProvinceId" class="input-validation-error"> 
    <option value="">Select Province</option> 
    <option value="613">Allen </option> 
    <option value="614">Anderson</option> 
    // data truncated .... 
</select> 
+0

Я никогда раньше не видел 'UIHintAttribute' - что он делает? :) –

ответ

2

Вам нужно добавить ErrorMessage = "Please Select a Country" в атрибуте аннотаций, подобно the example here:

[Range(0, 50, ErrorMessage = "Quantity on order must be between 0 and 50.")] 
public int OnOrder { get; set; } 
+0

на какой атрибут я могу добавить ErrorMessage. AFAIK его можно привязать только к атрибутам проверки. Но у меня их нет. Это вызывает ошибку, потому что «Выбрать провинцию» не имеет значения. –

+0

@geocine: Чтобы получить валидаторы, добавьте «using System.ComponentModel.DataAnnotations;» и System.ComponentModel.DataAnnotations.dll в качестве ссылки. – CRice

+0

@CRice, вы поняли меня неправильно, я знаю, как добавить валидаторы. Попробуйте мой тестовый пример. У меня нет атрибута проверки для свойства ProvinceID, поэтому я не могу приложить сообщение об ошибке. Используя пример Роберта, вы можете установить сообщение об ошибке, потому что у вас есть атрибут проверки диапазона. Сообщение об ошибке отображается на экране каждый раз, когда нарушается правило для диапазона. У меня нет правил, но по умолчанию выдается ошибка недопустимого типа. –

0

Для настройки валидаторов вы можете унаследовать от ValidationAttribute:

public class SomeAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
    } 
} 

Я думаю, что вам не нужно будет делать это но вместо этого следует попытаться сделать вашу нулевую длину строкой и иметь валидаторы в этом свойстве.

public string ProvinceId { get; set; } 

Затем преобразование модели просмотра в модель какого-либо домена, значение которой равно null, как только проверка прошла.

Смежные вопросы