在 mvc 视图的 web.config 自定义部分中获取参数的值
Posted
技术标签:
【中文标题】在 mvc 视图的 web.config 自定义部分中获取参数的值【英文标题】:Getting value of parameter in web.config custom section in mvc View 【发布时间】:2017-01-04 13:01:20 【问题描述】:我在 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>
【问题讨论】:
您是否遇到任何错误?你的代码不工作? 出现错误:无法使用 [] 将索引应用于“对象”AvailibilityTool.API C:\Code\AvailabilityTool2\AvailibilityTool.API\Views\Shared_Layout.cshtml 类型的表达式;可能这应该以其他方式完成。这段代码只是为了说明我想要做什么。 请从一些关于 ASP.NET MVC 的教程开始。我建议查看 Visual Studio 中的模板,单击 New Project > Website > MVC GetSection("roles") 返回一个表示该部分的类,其中有一个表示集合的属性,配置为默认值,因此您必须了解表示角色的配置类部分以便使用它。 我知道如何在 Controller 中使用它,但不知道如何在 View 中使用它...明显的问题是缺少从对象到例如“NameValueCollection”的解析。不幸的是,我不知道如何实现这一目标。 【参考方案1】:您不能直接访问该值System.Configuration.ConfigurationManager.GetSection("roles")["Role1"].
执行类型转换并访问键的值,如下所示。
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"];
【讨论】:
我在 View 中使用它。我需要cshtml cod,而不是c#。 @CapitanPlanet 用布局页面代码更新了答案 这不是我的投票。我根本无法投票(声誉低下)。我刚刚将您的帖子标记为答案并发布了我的最终代码。谢谢【参考方案2】:感谢巴拉吉 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>
【讨论】:
以上是关于在 mvc 视图的 web.config 自定义部分中获取参数的值的主要内容,如果未能解决你的问题,请参考以下文章