blazor - Bootstrap Navbar Dropdown 在我的 Blazor 应用程序中未按预期工作
问题描述
当我第一次加载我的 Blazor 项目时,它出现在https://localhost:5003/
.
我有六页用@page
. 在一个页面上Reader.razor
,我使用了带有下拉菜单的 Bootstrap NavBar。
@page "/reader"
<div class="container" id="myContainer" aria-labelledby="fullMessageBodyLabel">
<div class="bg-dark text-light">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<h6 class="card-title" id="myLabel"> Some Label Text Here ...</h6>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item dropdown">
<a class="nav-link" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="2em" height="2em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M16.59 5.59L18 7l-6 6l-6-6l1.41-1.41L12 10.17l4.59-4.58m0 6L18 13l-6 6l-6-6l1.41-1.41L12 16.17l4.59-4.58z" fill="currentColor" /></svg>
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Menu Item #1</a></li>
<li><a class="dropdown-item" href="#">Menu Item #2</a></li>
<li><a class="dropdown-item" href="#">Menu Item #3</a></li>
<li><a class="dropdown-item" href="#">Menu Item #4</a></li>
<li><a class="dropdown-item" href="#">Menu Item #5</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</div>
</div>
@code {
// Code here ...
}
这是我遇到的问题。如果我像这样导航到我的页面:
https://localhost:5003/reader?id=1234&value=somevalue
然后单击下拉链接(下 chevron .SVG),Blazor 将我发送回此处:
https://localhost:5003/
然后,当我单击浏览器后退按钮再次转到此处时:
https://localhost:5003/reader?id=1234&value=somevalue
然后再次单击下拉链接,下拉菜单将按预期运行......直到我刷新/重新加载页面。
我需要做什么才能让 Blazor 将我发送回导航栏下拉菜单上的根页面?
解决方案
好的,我弄清楚了我的项目发生了什么。
在此任务之前,我阅读并遵循了此处的布局示例。
甚至在那之前,我的 JavaScript 出现了一些问题,根本无法工作,然后我发现我错误地加载了我的 3rd 方库。所以,在我的MainLayout.razor
我有这段代码:
[Inject]
IJSRuntime JSRuntime { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await JSRuntime.InvokeAsync<IJSObjectReference>("import", "/js/jquery/jquery-3.6.0.min.js");
await JSRuntime.InvokeAsync<IJSObjectReference>("import", "/js/popper/popper.min.js");
await JSRuntime.InvokeAsync<IJSObjectReference>("import", "/js/bootstrap/bootstrap.min.js");
await JSRuntime.InvokeAsync<IJSObjectReference>("import", "/js/JavaScript.js");
}
}
在阅读了“ASP.NET Core Blazor 布局”文档并在我的代码中实现它之后,JavaScript 没有加载到我的Reader.razor
页面中。这是因为我已经移动OnAfterRenderAsync
到要包含的布局页面本身,它只包含在两个“主要”页面中,而不是我的Reader.razor
页面。
我试着把它放回,MainLayout.razor
但由于某种原因,JavaScript 现在只在我的Reader.razor
页面中工作,而不是在包含@layout
注释的其他两个页面中工作。
所以,我不得不找个地方把代码片段放在上面,这样我的所有页面都加载了 JavaScript。
最后,我决定将它放在 中App.razor
,现在我所有的 JavaScript 都可以在所有页面上运行。
推荐阅读
- amazon-web-services - 为 Lambda 函数保存和检索数据的最佳方式是什么?
- vba - VBA返回选项按钮选择的值
- python - 将字典重置为空字典不会释放内存吗?
- python-3.x - 如何实时检测文本?
- excel - 使用 VBA 生成 XML 文档的 UTF-8 和 ASCII 问题
- javascript - 初始未定义状态下的选择器函数错误
- javascript - 在我的浮动 div 中单击链接不起作用
- python-3.x - VS 代码运行器在全局环境中执行,尽管设置为使用虚拟环境
- java - 如果(计数 % 2 == 1)?
- c# - 每次我克隆我的对象时,刚刚创建的克隆会变得更快,并且会生成该克隆的克隆。如何解决这个问题?