2011-10-26 166 views
3

我有以下代碼塊: -在C#如何在屬性的屬性添加動態值

using System.ComponentModel.DataAnnotations; 
public class NewsItem 
{    
     [RegularExpression(System.Configuration.ConfigurationSettings.AppSettings["UrlRegEx"], ErrorMessage = "Invalid link")] 
     public string Url { get; set; } 
} 

此返回錯誤「的屬性參數必須是一個常量表達式的typeof表達或數組創建表達屬性參數類型「。

如何在RegularExpression屬性的第一個參數中給出值。我想給Web.Config變量賦值。我在EF的Model類中使用此代碼。

+0

你想使用web.config存儲這樣的字符串的原因是什麼?資源文件,數據庫或聲明的常量都是非常合理的方式,但我從來沒有聽說過使用web.config appsettings的人。 – Xhalent

+0

@Xhalent是的你是對的。但我認爲從Web.Config appsettings獲取RegularExpression的價值是一種快速方法,可以在需要時更改表達式字符串。否則,我們必須編譯代碼。 –

回答

0

您可以指向數據註解來接從資源文件中的值

ErrorMessageResourceName

OR

您可以編寫自定義的驗證方法,並從那裏挑值

CustomValidationAttribute

您可以編寫一個正則表達式派生屬性類,該類可以從web.config中讀取值。

+0

或實現IValidatableObject – Xhalent

+0

要編寫一個可以從web.config中讀取值的正則表達式派生屬性類,請參閱http://stackoverflow.com/questions/6665187/how-to-set-dynamic-value-in-my-attribute –