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

将EditForm移入组件后加载页面抛出异常,已设Model仍报错

问题原因与解决方案

问题原因

你把EditForm抽成独立组件MyEditForm后,组件内部的EditForm并没有拿到Model参数——因为父组件的myModel不会自动传递给子组件,而你的MyEditForm也没有声明接收Model的参数,导致内部EditForm缺少必填的Model/EditContext,从而抛出异常。

解决方案

需要让自定义组件接收并传递必要的参数给内部EditForm,步骤如下:

1. 修改自定义组件MyEditForm.razor

添加泛型参数和必要的组件参数,将外部传入的值传递给内部EditForm:

@typeparam TModel

<EditForm Model="@Model" OnValidSubmit="@OnValidSubmit" OnInvalidSubmit="@OnInvalidSubmit" Context="EditFormContext">
    <!-- 保留你原来的表单控件内容 -->
</EditForm>

@code {
    // 声明接收Model的参数
    [Parameter]
    public TModel Model { get; set; }

    // 声明接收提交回调的参数
    [Parameter]
    public EventCallback OnValidSubmit { get; set; }

    [Parameter]
    public EventCallback OnInvalidSubmit { get; set; }
}

2. 在父页面中传递参数给MyEditForm

使用组件时,把原来的Model和回调方法通过参数传递进去:

<MyEditForm Model="@myModel" OnValidSubmit="@SubmitSuccess" OnInvalidSubmit="@SubmitFailure"></MyEditForm>

@code {
    private YourModelType myModel = new YourModelType();

    private void SubmitSuccess()
    {
        // 原提交成功逻辑
    }

    private void SubmitFailure()
    {
        // 原提交失败逻辑
    }
}

这样修改后,内部的EditForm就能正确获取到Model参数,表单即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:37:16