blazor - 代码中的 Blazor NavigationManager NullReference 错误
问题描述
在 VS19 Professional 中使用 Blazor 当我尝试从 .razor.cs 文件后面的代码中使用 NavigationManager.NavigateTo 函数时,我遇到了 NullReference 异常。
我首先在 .razor.cs 文件的顶部注入 NaviagtionManager:
[Inject]
protected NavigationManager NavigationManager { get; set; }
然后当用户单击提交按钮时,数据被保存到 SQL 数据库(这部分工作正常),然后页面应该重定向到另一个页面,但由于“NavigationManager.get 返回 null”错误而失败。
这是保存数据并调用 NavigationManager 的函数:
public void Update() {
participants p = new participants {
ID = Convert.ToInt32(id),
FirstName = participant[0].FirstName,
LastName = participant[0].LastName,
Eating = participant[0].Eating,
Bowling = participant[0].Bowling,
EscapeRoom = participant[0].EscapeRoom
};
this.Db.UpdateParticipant(p);
NavigationManager.NavigateTo("Bowling/2020");
}
我一直无法在网上找到任何东西来帮助我解决这个问题。
有谁知道如何解决这个问题?
更新更多代码:
在 .razor 页面上,我有一个 EditForm,它在提交时调用 Update():
<EditForm Model="@participant" OnValidSubmit="@Update">
在 .razor.cs 页面上,这是 Update() 函数:
public void Update() {
participants p = new participants {
ID = Convert.ToInt32(id),
FirstName = participant[0].FirstName,
LastName = participant[0].LastName,
Eating = participant[0].Eating,
Bowling = participant[0].Bowling,
EscapeRoom = participant[0].EscapeRoom
};
this.Db.UpdateParticipant(p);
NavigationManager.NavigateTo("/Bowling/2020/");
}
数据库中的值得到正确更新。
更新:
发现问题,请看下面的回复。
解决方案
这是“不要在代码示例中留下任何内容”的明显案例。
在我的代码中,我有这个:
[Inject]
protected BowlingData Db { get; set; }
protected NavigationManager NavigationManager { get; set; }
(作为 Blazor 的新手,我认为 [Inject] 将包括它后面的所有内容,直到我的 [Parameters] 位于此代码片段下方。
当我发布问题时,我删除了
protected BowlingData Db {get; set;}
行以最小化示例代码的数量。如果我没有这样做,我相信我的问题会马上得到回答。
一旦我添加了第二个 [inject] 我的代码就可以正常工作:
[Inject]
protected BowlingData Db { get; set; }
[Inject]
protected NavigationManager NavigationManager { get; set; }
经验教训 - 关于 Blazor 和发布问题 :)
推荐阅读
- excel - 按路径和名称错误引用工作簿:下标超出范围
- php - 接收海量数据的最佳实践 [laravel Restfult API]
- dolphindb - 在 dolphindb 中,我有两个独立的集群。如何在这两个集群之间传输分布式数据库
- c++ - C ++:无法检测到变量的变化,人工“易失性”互斥锁不起作用
- postgresql - 搜索字符串并在表中插入值
- vb.net - 用 SQl 查询的结果填充 VB.net 数据表(链接到 microsoft access 关系数据库)
- html - 我似乎无法将 html 链接到 css
- python-3.x - 为什么在 Tensorflow 中构建自定义优化器时出现“NotImplementedError()”
- fortran - 分配的表变化
- java - Java Hash Map(1 个键的多个值)