_Layout.cshtml
<code><head>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
</head>
<body>
@if (HttpContextAccessor.HttpContext.Session.GetString("IsLoggedIn") == null)
{
<partial name="_NavBarBlank" />
}
else
{
<partial name="_NavigationBar" />
}
//codes
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body>
</code>
<code><head>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
</head>
<body>
@if (HttpContextAccessor.HttpContext.Session.GetString("IsLoggedIn") == null)
{
<partial name="_NavBarBlank" />
}
else
{
<partial name="_NavigationBar" />
}
//codes
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body>
</code>
<head>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
</head>
<body>
@if (HttpContextAccessor.HttpContext.Session.GetString("IsLoggedIn") == null)
{
<partial name="_NavBarBlank" />
}
else
{
<partial name="_NavigationBar" />
}
//codes
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
</body>
In _NavigationBar.cshtml
<code>@inject IHttpContextAccessor HttpContextAccessor
@{
SQLDB sQLDB = new SQLDB();
}
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">YourAppName</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<!-- Home link -->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
</ul>
@using Newtonsoft.Json;
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
<ul class="navbar-nav">
@{
string Role = HttpContextAccessor.HttpContext.Session.GetString("Role");
var dataTableParent = sQLDB.CreateTable($"SELECT Controller, isDropdown FROM WMS_ParentNavbar WHERE ROLE = "+Role+" ORDER BY Priority ASC");
}
@foreach (DataRow drParent in dataTableParent.Rows)
{
string controller = drParent["Controller"].ToString();
bool isDropdown = Convert.ToBoolean(drParent["isDropdown"]);
var dataTableChild = sQLDB.CreateTable($"SELECT CN.Views FROM WMS_ParentNavbar PN INNER JOIN WMS_ChildNavbar CN on PN.ObjectID = CN.ObjectID WHERE CN.Controller = '" + controller + "' AND CN.Role = "+ Role );
<li class="nav-item @(isDropdown? "dropdown" : "")">
@if (!isDropdown)
{
<a class="nav-link" asp-controller="@controller" asp-action="Index">@controller</a>
}
else
{
<a class="nav-link dropdown-toggle" href="#" id="@controller" role="button" data-bs-toggle="dropdown" aria-expanded="false">
@controller
</a>
<div class="dropdown-menu" aria-labelledby="@controller">
@foreach (DataRow drChild in dataTableChild.Rows)
{
string viewName = drChild["Views"].ToString();
<a class="dropdown-item" asp-controller="@controller" asp-action="@viewName">@viewName</a>
}
</div>
}
</li>
}
</ul>
</div>
</div>
</nav>
</code>
<code>@inject IHttpContextAccessor HttpContextAccessor
@{
SQLDB sQLDB = new SQLDB();
}
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">YourAppName</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<!-- Home link -->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
</ul>
@using Newtonsoft.Json;
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
<ul class="navbar-nav">
@{
string Role = HttpContextAccessor.HttpContext.Session.GetString("Role");
var dataTableParent = sQLDB.CreateTable($"SELECT Controller, isDropdown FROM WMS_ParentNavbar WHERE ROLE = "+Role+" ORDER BY Priority ASC");
}
@foreach (DataRow drParent in dataTableParent.Rows)
{
string controller = drParent["Controller"].ToString();
bool isDropdown = Convert.ToBoolean(drParent["isDropdown"]);
var dataTableChild = sQLDB.CreateTable($"SELECT CN.Views FROM WMS_ParentNavbar PN INNER JOIN WMS_ChildNavbar CN on PN.ObjectID = CN.ObjectID WHERE CN.Controller = '" + controller + "' AND CN.Role = "+ Role );
<li class="nav-item @(isDropdown? "dropdown" : "")">
@if (!isDropdown)
{
<a class="nav-link" asp-controller="@controller" asp-action="Index">@controller</a>
}
else
{
<a class="nav-link dropdown-toggle" href="#" id="@controller" role="button" data-bs-toggle="dropdown" aria-expanded="false">
@controller
</a>
<div class="dropdown-menu" aria-labelledby="@controller">
@foreach (DataRow drChild in dataTableChild.Rows)
{
string viewName = drChild["Views"].ToString();
<a class="dropdown-item" asp-controller="@controller" asp-action="@viewName">@viewName</a>
}
</div>
}
</li>
}
</ul>
</div>
</div>
</nav>
</code>
@inject IHttpContextAccessor HttpContextAccessor
@{
SQLDB sQLDB = new SQLDB();
}
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">YourAppName</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<!-- Home link -->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
</ul>
@using Newtonsoft.Json;
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
<ul class="navbar-nav">
@{
string Role = HttpContextAccessor.HttpContext.Session.GetString("Role");
var dataTableParent = sQLDB.CreateTable($"SELECT Controller, isDropdown FROM WMS_ParentNavbar WHERE ROLE = "+Role+" ORDER BY Priority ASC");
}
@foreach (DataRow drParent in dataTableParent.Rows)
{
string controller = drParent["Controller"].ToString();
bool isDropdown = Convert.ToBoolean(drParent["isDropdown"]);
var dataTableChild = sQLDB.CreateTable($"SELECT CN.Views FROM WMS_ParentNavbar PN INNER JOIN WMS_ChildNavbar CN on PN.ObjectID = CN.ObjectID WHERE CN.Controller = '" + controller + "' AND CN.Role = "+ Role );
<li class="nav-item @(isDropdown? "dropdown" : "")">
@if (!isDropdown)
{
<a class="nav-link" asp-controller="@controller" asp-action="Index">@controller</a>
}
else
{
<a class="nav-link dropdown-toggle" href="#" id="@controller" role="button" data-bs-toggle="dropdown" aria-expanded="false">
@controller
</a>
<div class="dropdown-menu" aria-labelledby="@controller">
@foreach (DataRow drChild in dataTableChild.Rows)
{
string viewName = drChild["Views"].ToString();
<a class="dropdown-item" asp-controller="@controller" asp-action="@viewName">@viewName</a>
}
</div>
}
</li>
}
</ul>
</div>
</div>
</nav>
In ASP CORE
The target is i want to dynamic my navigation bar based on the Role of the account then the role will pass the query the first query will return the Parent which the controller then next the second query to get the child of the parent which is the views. Now, in my problem the dropdown is not working can’t dropdown the child.
In the image attached there is a child. This concern only is the dropdown is not working.