Telerik MVC Combobox validation: сообщение об ошибке изменения неверного значения - PullRequest
0 голосов
/ 27 июля 2011
@(Html.Telerik().ComboBoxFor( x => x.SelectedFoo )
    .DataBinding( x => x.Ajax().Select( "_List", "Foo" ) )
    .AutoFill( true )
    .HighlightFirstMatch( true )
    .Filterable( x => x.FilterMode( AutoCompleteFilterMode.StartsWith ) )
)
@Html.ValidationMessageFor( x => x.SelectedFoo )

Хорошо, поэтому я использую компонент поля со списком telerik для ASP.NET MVC и не могу найти, где установить / изменить (также локализовать) сообщение об ошибке при вводе недопустимого значения.

Сообщение об ошибке по умолчанию:

Значение 'asd' недопустимо для SelectedFoo

Эта ошибка выдается, потому что "asd" не является частьюнабор разрешенных значений для поля со списком.

Я бы хотел сделать это, используя DataAnnotations, если это возможно.

Это то, что у меня сейчас есть:

[Required( ErrorMessageResourceType = typeof( Resources.ErrorStrings ),
    ErrorMessageResourceName = "Required_SelectedFoo" )]
public Guid? SelectedFoo { get; set; }

Ответы [ 2 ]

0 голосов
/ 27 июля 2011

Это странно, но можно объяснить. SelectedFoo имеет тип GUID. когда фреймворк пытается привести asd к типу GUID, он выдает исключение, которое добавляется в словарь состояния модели, и все это происходит до вызова атрибутов проверки. Таким образом, в этом сценарии вы, вероятно, не можете изменить то, как это происходит легко и правдоподобно. Однако вы можете изменить свою модель следующим образом ...

 [Required( ErrorMessageResourceType = typeof( Resources.ErrorStrings ),    ErrorMessageResourceName = "Required_SelectedFoo" )]
[RegularExpression("ExpressionforGUID")]
public string StringSelectedFoo { get; set; }
public GUID SelectedFoo{get{return (GUID)StringSelectedFoo;}}//have to do some sanitation work here

и при просмотре вы создаете автозаполнение или что-то еще для StringSelectedFoo вместо SelectedFoo

0 голосов
/ 27 июля 2011

Вы все сделали правильно.

Но если указано недопустимое значение, проверка Requried действительна .

В Required нет ничего плохого, что вам нужно, но что-то вроде RegularExpression атрибут проверки или что-то еще, чтобы получить правильное сообщение проверки.

...