Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET中根据用户角色动态创建导航栏_C#_Asp.net - Fatal编程技术网

C# 如何在ASP.NET中根据用户角色动态创建导航栏

C# 如何在ASP.NET中根据用户角色动态创建导航栏,c#,asp.net,C#,Asp.net,已经在谷歌搜索了一段时间,但仍然无法找到合适的文章或例子让我通过。我目前正在(学习)一个基于角色的应用程序,我做得很好。我现在有个问题。我的sql数据库中有一个名为SiteMap的表。此表包含以下列(id、标题、说明、Url、角色、父id、TabType和TabOrder)。每个列都有值。我想要实现的是,当用户登录时,我希望根据该用户的角色设置导航栏。如果用户是guest,我想显示一个具有just guest角色的导航栏。我怎么会有这个 下面是db的外观 id标题说明Url角色父id选项卡类型选

已经在谷歌搜索了一段时间,但仍然无法找到合适的文章或例子让我通过。我目前正在(学习)一个基于角色的应用程序,我做得很好。我现在有个问题。我的sql数据库中有一个名为SiteMap的表。此表包含以下列(id、标题、说明、Url、角色、父id、TabType和TabOrder)。每个列都有值。我想要实现的是,当用户登录时,我希望根据该用户的角色设置导航栏。如果用户是guest,我想显示一个具有just guest角色的导航栏。我怎么会有这个

下面是db的外观

id标题说明Url角色父id选项卡类型选项卡顺序

1根根*NULL 0 0

2管理员Padmin PortalAdmin#管理员1 2

3报告报告#管理1 3

4张票#管理员;客人11 4

5 ManageTicket.aspx Guest 4 4 2


下面是我想做的一个总结。当具有来宾角色的用户登录时,导航栏中应仅显示Ticket(带有子菜单Manage Ticket)。如果是具有管理员角色的用户,则应在导航栏中显示门户管理、报告、票证(带有子菜单管理票证)。我希望你能理解我的解释。感谢您为HomeController上的导航栏执行专用操作。该操作应确定用户的类型,并将其转换为视图模型。类似这样的内容(附带视图模型类)

将_Layout.cshtml中的navbar根div复制到navbar视图中,并在_Layout.cshtml中将其替换为:

           @{Html.RenderAction("Navbar","Home");}
使用标准Razor渲染导航栏元素

    <div class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
            <li>@Html.ActionLink("Home", "Index", "Home")</li>
            <li>@Html.ActionLink("About", "About", "Home")</li>
            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
            @if (Model.Administrator)
            {
                <li>ADMINISTRATOR LINK</li>
            }
            @if (Model.Reporting)
            {
                <li>REPORTING LINK</li>
            }
        </ul>
        @Html.Partial("_LoginPartial")
    </div>

  • @ActionLink(“主页”、“索引”、“主页”)
  • @ActionLink(“关于”、“关于”、“主页”)
  • @ActionLink(“联系人”、“联系人”、“主页”)
  • @if(Model.Administrator) {
  • 管理员链接
  • } @if(模型报告) {
  • 报告链接
  • }
@Html.Partial(“_LoginPartial”)
我不能直接回答你的问题,但我希望这能为你指明正确的方向。假设您已经或将要创建一个用户表,其中包含一列可以容纳用户角色(基本上是权限级别),我将向您提供一个查询,以检查登录时单个用户的角色,并显示与该角色关联的导航栏。意思是在登录验证过程中,当您检查用户是否存在并且是否具有正确的凭据时,我将检索其“角色”或权限级别,并将其存储在会话数据中。然后使用该存储项查询导航栏的“站点地图”表,其中用户的“权限”或“角色”与导航栏角色类似。一旦检索到它,您需要做的就是在页面上显示它

如果是访问页面的来宾,您可以将来宾导航栏设置为默认值,只有在用户实际登录后才会更改

您可以对用户权限进行一些研究,并在登录时存储会话数据


我真的希望这有帮助。如果不查看您的代码以了解发生了什么,我将无法做更多的工作

需要提供一些代码。
    <div class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
            <li>@Html.ActionLink("Home", "Index", "Home")</li>
            <li>@Html.ActionLink("About", "About", "Home")</li>
            <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
            @if (Model.Administrator)
            {
                <li>ADMINISTRATOR LINK</li>
            }
            @if (Model.Reporting)
            {
                <li>REPORTING LINK</li>
            }
        </ul>
        @Html.Partial("_LoginPartial")
    </div>