@(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; }
答案 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或其他内容