有沒有辦法在MVC 3中進行相同類型的客戶端驗證,而無法在視圖模型級別設置驗證? 我有兩個要求阻止我在viewmodel級別添加驗證。我希望能夠具有相同類型的「內置」驗證,但不更改視圖模型或控制器代碼。我希望能夠在視圖級別部署後更改,打開/關閉和驗證。理想情況下,我希望能夠編輯視圖標記,而無需編寫和維護自己的JavaScript。MVC 3沒有註釋的客戶端驗證?
回答
您可以創建自己的TypeDescriptionProvider,它將允許在運行時增強視圖模型。
基於this代碼示例(XmlMetadataTypeDescriptor,XmlMetadataTypeDescriptionProvider),你應該能夠:使用包含屬性驗證外部XML
- 增強視圖模型。
打開驗證與
TypeDescriptor.AddProvider
,並關閉它:
TypeDescriptor.RemoveProvider
更新
對於M礦石信息,你可以閱讀偉大的文章:"Understanding the TypeDescriptor: A Metadata Engine for Designtime Code"。
你有沒有更簡單的例子?您鏈接的示例似乎有一個損壞的解決方案文件。 – SideByEach 2011-03-22 19:48:53
解決方案的錯誤是什麼?因爲它爲我工作。請記住,您不需要整個代碼作爲RiaServices的示例,您需要根據自己的需要對其進行定製:僅使用XmlMetadataTypeDescriptor,XmlMetadataTypeDescriptionProvider和依賴類。如果您仍然遇到問題,我可以發佈我正在使用的代碼。 – baalazamon 2011-03-23 11:43:44
感謝Baal的幫助,但是我無法讓項目編譯,而且它的語言我不明白。我將嘗試追蹤XmlMetadataTypeDescriptor的VB.net示例。 – SideByEach 2011-03-23 14:33:54
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
這可能會幫助你,只有在客戶端驗證,但這樣不甚理想。
- 1. MVC5 - 數據註釋 - 客戶端驗證沒有發生?
- 2. MVC中沒有數據註釋的自定義模型和客戶端驗證
- 3. Asp.net MVC客戶端驗證,沒有客戶端驗證的子項?
- 4. ASP.NET MVC 3客戶端驗證
- 5. MVC 3客戶端比較驗證
- 6. 客戶端驗證在asp.net mvc 3
- 7. ASP.NET MVC 3不引人注目的客戶端驗證
- 8. ASP.NET MVC數據註釋客戶端驗證與繼承RegularExpressionAttribute
- 9. 自定義數據註釋驗證與客戶端驗證
- 10. MVC 3客戶端驗證與數據註釋收集 - 不工作
- 11. MVC客戶端驗證
- 12. 客戶端驗證MVC 5
- 13. 客戶端驗證不MVC
- 14. asp.net mvc客戶端驗證
- 15. MVC 3 - 帶註釋的表單驗證
- 16. MVC 3數據註釋關閉驗證
- 17. 客戶端驗證屬性3
- 18. ASP.Net MVC 3客戶端驗證與3個選項卡形式
- 19. 服務器端自定義數據註釋驗證MVC 3
- 20. 客戶端自定義註釋驗證不起作用
- 21. MVC2客戶端驗證與RenderAction視圖中的註釋
- 22. cakephp客戶端/添加註釋的模型驗證
- 23. MVC客戶端驗證EditorFor中的foreach
- 24. MVC 3.0:爲什麼沒有客戶端驗證消息?
- 25. ASP.NET MVC + FluentValidation + PartialView>沒有客戶端驗證
- 26. 日期失敗客戶端和服務器端驗證使用ASP.NET MVC 3數據註釋
- 27. ASP。 NET MVC 3不引人注目的客戶端驗證不總是工作
- 28. MVC 3 Internet Explorer中的客戶端日期驗證問題
- 29. ASP.NET MVC 3客戶端自定義驗證中的jQuery錯誤
- 30. 使用FluentValidation/MVC驗證客戶端上的複選框3
出於好奇,這些要求是什麼? – neontapir 2011-03-22 14:59:33
要求是任何驗證都可以打開/關閉,驗證中的閾值可以改變。所有後期部署,無需重新編譯後端。 – SideByEach 2011-03-22 19:50:14
Gotcha。我最終實現了一個使用IronRuby腳本引擎處理類似請求的解決方案,因此我不必重新編譯應用程序以更改其運行時行爲。 – neontapir 2011-03-22 21:56:17