属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

时间:2015-07-17 17:50:59

标签: asp.net-mvc-4

我想将组名称指定为授权过滤器的属性。

如下所示

[FilterConfig.AuthorizeAd(Group = "DirectoryName")]
 public ActionResult GetData()
  {
  }  

我尝试通过以下方式添加硬编码,但是

[FilterConfig.AuthorizeAd(Group = Constants.ActiveDirectoryName)]
     

其中常量是类并且创建成员如下:

public const  string ActiveDirectoryName = "directoryName";

现在我想从app.config中获取它,尝试如下

[FilterConfig.AuthorizeAd(Group = ConfigurationManager.AppSettings["Directory_Name"].ToString()

将msg错误称为“属性参数必须是常量表达式”

如何从配置中分配数据? 请建议我。

1 个答案:

答案 0 :(得分:15)

您无法使用属性执行此操作,它们必须是错误消息中所述的常量。如果您想从配置文件中获取值,可以通过将键传递给属性来完成,然后在构造函数中从配置文件中获取所需的值

    public MyAttribute :Attribute
    {
        private string _config;
        public MyAttribute(string configKey)
        {
            _config = ConfigurationManager.AppSettings[configKey];

            ...
        }
    }

HTH