我在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>
}
答案 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>
}