2009-12-08 108 views
2

我在玩System.ComponentModel.DataAnnotations命名空間,目的是獲取一些驗證信息到我的ASP.NET MVC應用程序。通過DataAnnotations/Attributes共享正則表達式的方法

我已經碰到了RegularExpression註解的問題。

因爲這些註釋是屬性,所以它們需要常量表達式。

好的,我可以使用填充正則表達式字符串常量的類。

問題是我不想用C#解析器所需的轉義字符污染我的正則表達式。我的首選是將正則表達式存儲在資源文件中。

問題是我不能在我的數據註釋中使用這些字符串資源,因爲它們不是常量!

有沒有解決這個問題的方法?

如果不是,這似乎是使用屬性進行驗證的重要限制。

回答

0

顯然,在.NET 4中,DataAnnotations屬性的覆蓋值爲Func< string>,它們的構造函數描述爲「允許訪問驗證資源的函數」。

3

在C#裏面只有你需要一個轉義碼(雙引號)...如果您使用逐字字符串

@"like \this\ note \slash here does nothing only quote "" needs doubling 
you can even use newline"; 

總是@"..."串寫的正則表達式 - 避免了許多頭痛。

0

您可以創建一個自定義驗證屬性like this作爲代理從您的資源文件加載正則表達式。