在mvc View中获取web.config自定义部分中的参数值

时间:2017-01-04 13:01:20

标签: asp.net-mvc model-view-controller view web-config

我在web.config中有自定义部分,其中包含用户角色:

  <roles>
     <add key="Role1" value="Dev" />
     <add key="Role2" value="Dev2" />
  </roles>

我想在我的_layout页面中使用key获取价值。然后根据用户包含的角色隐藏菜单中的链接。像这样:

     @if (User.IsInRole(@System.Configuration.ConfigurationManager.GetSection("roles")["Role1"]))
     {
     <li>@Html.ActionLink("{{'Statistics' | translate}}", "Statistics", "Home", new { area = "" }, null)</li>
     }

2 个答案:

答案 0 :(得分:0)

您无法直接访问该值System.Configuration.ConfigurationManager.GetSection("roles")["Role1"].执行类型转换并访问key的值,如下所示。

var section = ConfigurationManager.GetSection("roles") as NameValueCollection;
var value = section["Role1"];

在.cshtml / _Layout页面中,您可以使用@符号,如下所示。

 @{
        var section = System.Configuration.ConfigurationManager.GetSection("roles") as System.Collections.Specialized.NameValueCollection;
        var value = section["Role1"];
  }

答案 1 :(得分:0)

谢谢Balaji M! 这是我的代码的最终版本:

                @{
                var sections = System.Configuration.ConfigurationManager.GetSection("roles") as System.Collections.Specialized.NameValueCollection;
                }

                @if (User.IsInRole(sections["StatistiscRole"]))
                {
                <li>@Html.ActionLink("{{'Statistics' | translate}}", "Statistics", "Home", new { area = "" }, null)</li>
                }