【发布时间】:2019-10-15 04:01:01
【问题描述】:
我希望导航栏上的链接根据数据库中的数据显示或消失。所有导航栏链接都在 _Layout.cshtml 中,所有页面都在使用它。
<ul>
@if (User.Identity.IsAuthenticated)
{
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Bookings</a>
<ul class="dropdown-menu">
<li>@Html.ActionLink("All Bookings", "GetAllBookings", "Booking")</li>
<li>@Html.ActionLink("Member's Dashboard", "GetBookingsByStatus", "Booking")</li>
</ul>
</li>
</ul>
我希望会员的仪表板仅在他们是会员并且在其个人资料中具有某些属性时才显示。根据数据库中的数据动态更改导航栏链接的最佳方法是什么?
【问题讨论】:
-
而不是这个用户认证检查,而是使用您自己的自定义检查,例如用户是否具有特定属性或特定角色。创建第一个请求后,您可以加载这些值,并可以检查共享视图并根据条件呈现视图。
-
@RajeshB 如何检查网站属性,这是我的全部问题。这是每个控制器都使用的布局页面,并且布局页面没有使用任何模型,那么我将如何获取数据?
-
你了解如何在布局页面上包含条件 if 吗?如果没有,我会发布一些给你提示的东西。
-
@JohnLord 我知道如何在剃刀视图中写 If 和 else ?我想知道如何在布局页面中获取数据。例如:成员属性在表 tblCustomer 中,此布局页面不使用任何模型。如果您想查看任何代码,请告诉我?
-
抱歉耽搁了。工作紧急。所以基本上你必须将数据传递给页面才能对数据采取行动。你有几个选择。一种是为要使用的页面创建一个模型,但这在这种情况下可能没有用。您还可以传递 viewbag 变量。据我所知,这是您仅有的两个选择。发布代码并没有什么坏处,有人可以为您做更多的事情。
标签: c# asp.net asp.net-mvc razor model-view-controller