You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor动画执行完成后跳转testpage报EditForm参数缺失错误原因排查

问题根因

你遇到的报错和跳转逻辑无关,跳转本身已经执行成功,错误来自testpage组件本身的生命周期逻辑漏洞:

  • Blazor组件生命周期中,OnParametersSet的执行时机早于OnInitializedAsync中异步等待的内容返回时机。你在testpage中将EditContext的初始化放在了await Task.Run()的异步逻辑中,当EditForm执行OnParametersSet校验参数时,EditContext还没有被赋值,仍为null。
  • 你写的判断逻辑@if (projectModel != null)完全起不到拦截渲染的作用:因为projectModel在声明时就已经直接初始化private NewProjectVM projectModel = new();,组件初始化完成后projectModel永远不为null,会直接渲染EditForm,此时EditContext还未完成异步赋值,直接触发参数校验失败的报错。

修复方案

二选一即可:

  1. 调整渲染判断条件,确保EditContext初始化完成后再渲染EditForm:
@if (projectModel != null && EditContext != null){
    <!-- 原有EditForm代码 -->
}
  1. 移除无意义的异步包装,同步初始化EditContext:
    你的EditContext初始化逻辑没有任何需要异步执行的IO操作,完全不需要套Task.Run,直接同步赋值即可避免异步延迟问题:
protected override void OnInitialized()
{
    EditContext = new EditContext(projectModel);
    EditContext.OnFieldChanged += EditContext_OnFieldChanged;
}

内容的提问来源于stack exchange,提问作者Baba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:36:03