在 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 自定义部分中获取参数的值的主要内容,如果未能解决你的问题,请参考以下文章

MVC4 中的自定义 403 错误页面未显示

如何在 MVC4 的 UserProfile 中创建自定义附加字段

如何在 Asp.Net Mvc 3 中显示自定义错误页面?

实现自定义 MVC 基本视图页面

如何使自定义错误页面在 ASP.NET MVC 4 中工作

自定义 ASP.NET MVC 404 错误页面的路由