2011-10-26 126 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 –