首先,我不得不說我明白基於數據註解的模型驗證如何在ASP.NET MVC4中工作,並且我已使用DataAnnotationsModelValidatorProvider
成功實現了它。所以我不需要幫助來設置它。ASP.NET MVC模型驗證錯誤本地化上下文
但是,當它歸結爲HtmlHelpers
,我努力想弄清錯誤信息的上下文。通過說context
,我的意思是我們正在談論哪個錯誤。哪個屬性返回錯誤?
我能得到的是Key
錯誤和當前ErrorMessage
,但在編程上,沒有什麼,至少我知道,這將溝通我們正在談論的錯誤。無論是Required
屬性還是其他屬性,我都無法找到如何區分它們的方法。
讓我們稍微打開場景。我有自定義HtmlHelpers
呈現ContentEditable
元素。例如Html.ContentEditableValidationMessageFor(m => m.firstName);
。它會輸出這樣的事情:
<span contenteditable="true" data-valmsg-for="firstName" data-valmsg-replace="Please provide first name" class="field-validation-error">Please provide first name</span>
現在,我有一個jQuery插件來處理,並堅持在contenteditable
元素的變化,它會堅持他們到後端。但是,UI沒有任何可以說明我們正在討論的錯誤消息。人類可以很容易地看到它是RequiredAttribute
,但在編程上沒有數據可以將它與某些MinLengthAttribute
區分開來。
在這種情況下,如果我只是簡單地使用data-valmsg-for="firstName"
作爲本地化的關鍵字,那麼將返回相同的屬性的所有錯誤相同的錯誤消息。
圓起來
什麼是最好的實踐中,當ModelState
是可用的,爲:發射ModelError一個唯一的ID?考慮到我使用ASP.NET MVC4和DataAnnotationsModelValidatorProvider
。
我可以想出很多方法來「一起攻擊」,但我想使用ModelState
以及任何MVC提供的方法。如果這一切都歸結爲編寫一個自定義ModelValidatorProvider
,那麼我都爲它打開。只要它是最好和最可持續的方式去實現它。我所有的做更多和更少的後來比盜號的現在和黑客它永遠保持它的工作
這對我來說是一個非常有趣的問題。你使用反射技術的基礎是什麼?和你一樣,「你可以通過反思來做到這一點」通常意味着爲自己設置一些代碼,這些代碼不可避免地會被維護得不好。將密切關注這一個... – 2013-04-05 20:40:21
你想在客戶端或服務器端的數據? – Jared 2013-04-08 21:00:57
您的進度有何更新? – 2013-04-09 08:06:07