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