2010-10-31 50 views
3

我想將DataAnnotations存儲在數據庫中。如何通過反射(或通過其他方法)檢索DataAnnotation的字符串表示形式?序列化DataAnnotations

public class Product 
    { 
     [DisplayName("Price")] 
     [Required] 
     [RegularExpression(@"^\$?\d+(\.(\d{2}))?$")] 
     public decimal UnitPrice { get; set; } 
    } 

結果可能是XML或JSON數據,只要它是字符串化。

+0

你能解釋爲什麼你真的想要這樣嗎? – Steven 2010-10-31 20:15:24

+1

原因是我建立了一個CMS,我想從DTO類構建「內容類型」。 – W3Max 2010-10-31 23:40:21

回答

1

這是非常相似的retrieve-custom-attribute-parameter-values,我會使用它作爲一個基礎,你的解決方案

+0

問題是我不知道DataAnnotation的具體類型,所以我無法像本示例中那樣訪問屬性(通過將ValidationAttribute強制轉換爲特定類型)。 – W3Max 2010-10-31 23:37:52

1

你會更好編寫自己的驗證提供者,然後只存儲驗證規則在你的數據庫中更方便的形式。分析字符串以嘗試實例化屬性看起來好像比需要更多的工作。 :)

樣品驗證提供商:http://bradwilson.typepad.com/blog/2009/10/enterprise-library-validation-example-for-aspnet-mvc-2.html

+0

謝謝!非常高興你嘗試幫助我。您提供的解決方案的問題是我需要它適用於所有類型的DataAnnotations。我使用自定義屬性來存儲不僅僅是驗證規則。我不能在這裏解釋所有的概念,但我需要它來完成我在示例中演示的內容。 – W3Max 2010-11-01 00:57:13

+0

您還可以爲非驗證屬性編寫模型元數據提供程序。 – 2010-11-01 01:01:01