我找到了BlazorInputFile库,但是从 2019 年 10 月开始仍然有开放的 PR,我不确定这个库是否还在维护。另外,我在博客中找到了几篇关于如何在 Blazor 中使用 JS 上传文件的文章。如果可能的话,我不想使用 JS,但我确实需要使用 Blazor 上传文件……是否可以在不使用 JavaScript 的情况下这样做?
我创建了列表NavLink,这只是它们之间的一个区别,动态参数Id
<div>
@foreach (var service in pageGlobal.Person.Services)
{
var link = $"service_description/{service.Identifier}";
<ul class="nav flex-column">
<li class="nav-item px-3">
<NavLink class="nav-link" href="@link">
@service.Name
</NavLink>
</li>
</ul>
}
</div>
Run Code Online (Sandbox Code Playgroud)
仅当我第一次单击时它才有效(无论哪个 NavLink 项目都可以正常工作)。
单击下一个链接 - 网址已更改但没有任何反应。
代码ServiceDescription.razor
@page "/service_description/{Id:int}"
@using Site.Data
@using Site.ViewModels
@inject StartUpService page
@if (service != null)
{
<div> <h3>Service Name - @service.Name</h3> - <h4>@service.Description</h4> </div>
}
@code
{
[Parameter]
public int Id { get; set; }
PageGlobal pageGlobal;
Service service;
protected override async Task OnInitializedAsync() …Run Code Online (Sandbox Code Playgroud) 我有一个简单的应用程序,但它在页面初始化时停止工作并出现错误
NullReferenceException:未将对象引用设置为对象的实例。Site.Shared.MainLayout.BuildRenderTree(RenderTreeBuilder __builder) 错误: 在此处输入图像描述
但代码中并没有什么复杂的地方。应用程序剃须刀:
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
Run Code Online (Sandbox Code Playgroud)
_Host.cshtml: 在此输入图像描述
MainLayout.razor: 在此处输入图像描述
StartUpService.cs: 在此处输入图像描述
page.GetPageGlobalAsync() 运行良好,我可以在调试模式下传递此方法。 在此输入图像描述
但是在我出现这个错误之后。并且不知道原因是什么以及如何获得有关问题所在的更多信息。
UPD
如果我将代码更改为:
PageGlobal page = new PageGlobal()
Run Code Online (Sandbox Code Playgroud)
它开始工作,但 OnInitializedAsync 是异步方法,为什么我不能在 OnInitializedAsync 方法中使用异步等待方法?