2012-03-06 48 views
0

我有一個OrderNumber模型屬性,類型爲double?並且我想要更改默認值「The value'abc'對於訂單號無效。」當輸入字母數字(或其他無效)數據時產生的錯誤消息,但是我只想爲我的模型對象中的OrderNumber屬性執行此操作。我已經嘗試過使用正則表達式數據註釋,但這隻適用於客戶端驗證的服務器端數據類型(不是一個)。在正則表達式註解開始之前,對於某些表單,我們有很多輸入對象,所以我們必須禁用客戶端腳本,因爲它會導致速度問題,另外一些客戶端會禁用腳本,所以我們需要讓這個自定義錯誤消息在服務器端工作。如果輸入的數據類型不正確,如何設置自定義錯誤消息?ASP.NET MVC自定義特定數字屬性的錯誤消息(DataAnnotations?)

這也需要與兼容定位(例如,我的顯示標籤註釋是[顯示(的ResourceType = typeof運算(Localisation.Resources),名稱= 「OrderNumberLabel」)])

+0

你不能爲此得出你自己的驗證器類嗎?在那裏你甚至可以處理客戶端驗證(如果需要的話)。 – 2012-03-06 16:26:41

+0

就是這樣,真的,我所追求的 - 麻煩在於,理想情況下,我希望保持雙重?類型的屬性,否則它幾乎使驗證半無意義 - 我見過的建議,使其成爲一個字符串,然後再次驗證並轉換爲雙?在控制器中,但這似乎不是個好主意 - 問題在於它是屬性類型轉換的輸入數據,它似乎首先被啓動,這是我的問題。 – 2012-03-07 09:51:51

+0

我想這只是一個意見,但問題可能是:它是一個「雙?」類型?畢竟你正在建模UI,所以你正在討論_about_用戶。如果他們明白什麼是空字段,什麼時候它有一個浮點數,那麼我認爲答案是「是的,保持爲雙精度?」。並做任何你可能需要做的事情。 – 2012-03-07 10:33:15

回答

-1

這可以通過實現設置DefaultModelBinder ResourceClassKey屬性,

在您的應用程序下創建一個「App_GlobalResources」文件夾並添加資源文件。 (讓我們將其命名爲「MyResource.resx」)。

現在添加一個鍵「PropertyValueInvalid」並分配您的errorTemplate(例如「屬性{1}」的無效內容{0}「)。

它應該看起來像..

enter image description here

現在在Global.asax中添加以下行 「的Application_Start」

DefaultModelBinder.ResourceClassKey = "MyResource"; 

現在,您將看到自定義的錯誤。(對於非JS)

enter image description here

+0

問題是這將影響_every_錯誤消息,而不僅僅是指定屬性的錯誤消息 - 在訂單行字段中輸入「訂單號無效,請僅輸入數字」消息並不合理。 _did_提到這一點,或者是否有某種方法可以達到某些特定屬性? – 2012-03-07 09:48:05

+0

然後,唯一的方法是在模型中將其聲明爲字符串,對數字[\ d] +進行正則表達式檢查,然後你可以指定你想要的錯誤信息。PropertyValueInvalid主要用於數字類型。 – Manas 2012-03-07 12:27:47

+0

我希望避免不必強制輸入數據,因爲它增加了不必要的額外複雜性和代碼/屬性 - 我已經嘗試過nted將屬性更改爲OrderNumberText,使用正則表達式對其進行驗證,然後使用只讀屬性OrderNumber作爲雙精度值?返回一個值(所以我不必改變很多代碼,只有原始OrderNumber的輸入視圖字段) - 這仍然保持它在模型對象內,但它仍然有點混亂 – 2012-03-07 14:37:57