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

MudBlazor中按下回车键无法提交MudTextField值的问题

解决Blazor WebAssembly中MudTextField回车提交时绑定值为null的问题

问题原因

默认情况下,MudTextField的UpdateMode为UpdateMode.OnChange,绑定值仅在文本框失去焦点或用户手动触发变更时同步。当你监听OnKeyDown事件并按下回车键时,事件触发时机早于绑定值更新,因此MyChatState.CurrentMessage还未同步文本框最新内容,导致获取到null。

解决方案1:修改TextField的更新模式

将MudTextField的UpdateMode设置为UpdateMode.OnInput,让文本框内容实时同步到绑定值,按下回车键时即可获取最新内容:

<MudForm Class="d-flex flex-grow-1 px-4" SubmitOnEnter="true">
    <MudTextField T="string" Placeholder="@Localizer["Enter your message..."]" @bind-Value="@MyChatState.CurrentMessage"
                  DisableUnderLine="true" Lines="2" Margin=Margin.Dense Clearable="true"
                  Variant="Variant.Outlined" Validation="@(_validator.ValidateFieldsAsync)"
                  UpdateMode="UpdateMode.OnInput" OnKeyDown="HandleKeyDown" />
</MudForm>

解决方案2:利用MudForm的提交事件(推荐)

既然已启用SubmitOnEnter="true",更符合表单设计逻辑的方式是直接监听MudForm的OnSubmit事件,此时表单会自动确保所有字段绑定值已更新,无需手动处理键盘事件:

<MudForm Class="d-flex flex-grow-1 px-4" SubmitOnEnter="true" OnSubmit="HandleFormSubmit">
    <MudTextField T="string" Placeholder="@Localizer["Enter your message..."]" @bind-Value="@MyChatState.CurrentMessage"
                  DisableUnderLine="true" Lines="2" Margin=Margin.Dense Clearable="true"
                  Variant="Variant.Outlined" Validation="@(_validator.ValidateFieldsAsync)" />
</MudForm>
@code {
    protected async Task HandleFormSubmit()
    {
        var message = MyChatState.CurrentMessage;
        // 发送消息到API的逻辑
    }
}

说明

方案2更推荐,它遵循表单原生提交逻辑,MudForm会自动处理验证和值同步,避免手动键盘事件处理的边界问题(比如多行文本框中Enter+Shift换行的场景)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:42:48