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

use*_*874 3 asp.net-mvc-4

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

它将采取如下

[FilterConfig.AuthorizeAd(Group = "DirectoryName")]
 public ActionResult GetData()
  {
  }  
Run Code Online (Sandbox Code Playgroud)

坚持硬编码我尝试添加如下

[FilterConfig.AuthorizeAd(Group = Constants.ActiveDirectoryName)]
Run Code Online (Sandbox Code Playgroud)

其中Constants是class并创建成员如下:

public const  string ActiveDirectoryName = "directoryName";
Run Code Online (Sandbox Code Playgroud)

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

[FilterConfig.AuthorizeAd(Group = ConfigurationManager.AppSettings["Directory_Name"].ToString()
Run Code Online (Sandbox Code Playgroud)

它将错误消息传递给"一个属性参数必须是一个常量表达式"

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

Sli*_*sim 18

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

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

            ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

HTH