2011-07-27 82 views
0
@(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,並且我找不到設置/更改(也是本地化)錯誤的位置消息輸入無效值時。Telerik MVC Combobox驗證:更改無效值錯誤消息

的默認錯誤信息是

值「ASD」是無效的SelectedFoo

這個錯誤被拋出,因爲"asd"不是組合框的設定允許值的一部分。

我想使用DataAnnotations來做到這一點,如果可能的話。

這是我目前有:

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

回答

0

這很奇怪,但可以解釋。 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

是的,你說得對,我認爲telerik正在檢查項目是否在集合。那麼我猜想這是令人放心的。 –

0

你做的一切權利。

但是當無效值與Requried驗證有效時

Required沒有什麼錯,但需要RegularExpression驗證屬性或其他東西來獲得正確的驗證消息。

+0

我知道這不是'Required',這不是問題。我試圖更改telerik設置的錯誤消息,因爲輸入的值在組合框中無效(即,在值列表中找不到) –