Telerik MVC Combobox验证:更改无效值错误消息

时间:2011-07-27 10:50:19

标签: asp.net-mvc validation telerik-mvc

@(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 :(得分:0)

你做的一切都很正确。

但是当无效值为intered时,Requried验证有效

您需要使用Required,但RegularExpression验证属性或其他内容可以获得正确的验证消息。

答案 1 :(得分:0)

这很奇怪,但可以解释。 SelectedFoo是典型的GUID。当框架尝试caste asd以键入GUID时,它会抛出并添加到modelstate字典中的异常,所有这些都在调用验证属性之前发生。因此,在这种情况下,您可能无法以简单易懂的方式改变它的方式。但你可以做的就是像......那样改变你的模型。

 [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

创建AutoComplete或其他内容