我正在嘗試實現對數據類型的限制。我已經使用DataAnnotations,但對於數據類型,它不顯示自定義消息asp.net mvc 3驗證數據類型
例如,當我試圖輸入字符串數據到int類型字段。在這種情況下,我如何定製消息?
我正在嘗試實現對數據類型的限制。我已經使用DataAnnotations,但對於數據類型,它不顯示自定義消息asp.net mvc 3驗證數據類型
例如,當我試圖輸入字符串數據到int類型字段。在這種情況下,我如何定製消息?
如果我不得不猜測,您聽起來像是在驗證模型中的一個或多個字段時要顯示自定義消息。你也可以繼承的DataAnnotations.ValidationAttribute
類並重寫IsValid(object)
方法,最後設置自定義ErrorMessage
值(其中ErrorMessage
已經屬於ValidationAttribute
類)
public class SuperDuperValidator : ValidationAttribute
{
public override bool IsValid(object value)
{
bool valid = false;
// do your validation logic here
return valid;
}
}
最後,裝飾與屬性
public class MyClass
{
[SuperDuperValidator(ErrorMessage="Something is wrong with MyInt")]
public int MyInt { get; set; }
}
你的模型屬性
如果您使用開箱即用的MVC3,則應該只需要對模型進行屬性驗證(儘管您的模型可能會有所不同/具有更多屬性等)。因此,在您的[HttpPost]
控制器操作中,MVC將會自動綁定MyClass
,您將能夠使用ModelState.IsValid
來確定發佈的數據實際上是否有效。
喜歡驗證器名稱:) lmao – IamStalker 2011-07-06 08:56:27
Pavel,
DataAnnotations DataType屬性不影響驗證。它用來決定你的輸入是如何呈現的。在這種情況下,David的解決方案在上面起作用。
然而,如果你希望只使用內置的驗證屬性,您可能需要使用這樣的範圍屬性:
[Range(0, 10, ErrorMessage="Please enter a number between 0 and 10")]
public int MyInt { get ; set ;}
(當然,你真正應該使用ErrorMessageResourceName /類型參數,並提取出硬編碼錯誤消息字符串到RESX文件)
確保讓MVC知道哪裏來呈現你的錯誤信息:
<%= Html.ValidationMessageFor(m => m.MyInt) %>
或者您可以使用EditorForModel,它會正確設置它。
我不認爲這已被回答,因爲我有同樣的問題。
如果您有一個具有int類型屬性的模型,並且用戶鍵入了一個「asd」字符串,那麼MVC3框架綁定/驗證步驟將導致您的視圖顯示"The value 'asd' is not valid for <model property name or DisplayName here>"
。
對我來說,海報是要求這個消息,MVC3框架輸出定製? 我也想知道。雖然該消息是不是太糟糕,如果你標記你的領域的東西,很容易表示數量預計可能仍然需要包括其他的原因所以說像:
"The value 'asd' is not valid for <fieldname>; must be a positive whole number."
讓用戶沒有進入值之後的值以及每次獲取不同的錯誤消息。
請顯示您的模型類和您的視圖 – hunter 2011-05-20 17:41:03