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

Blazor SSR对话框内嵌增强表单提交后异常问题求助

更新: 问题原因是Blazor Server在提交后渲染新页面时,无法识别dialog的open属性。


问题描述

我希望创建一个内嵌表单的对话框,提交后表单可更新成功提示或错误信息,但对话框不应自动关闭,页面也不应重载。

当前问题是**增强加载(Enhanced loading)**与对话框及表单的兼容性不佳。我原以为Blazor仅会更新表单DOM,不会修改表单外的对话框,但提交后对话框被关闭,页面变得无响应(仿佛模态框仍处于打开状态但不可见)。

据我理解,若表单的method属性不为dialog,对话框不应自动关闭,因此我推测问题出在增强加载上...

相关代码

<dialog id="emailModal" class="modal modal-bottom sm:modal-middle">    
    <div class="modal-box">
        <button class="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" type="button" onclick="emailModal.close()">✕</button>
        <EditForm id="email-form" Model="Model" FormName="EmailForm" Enhance
                  OnValidSubmit="HandleValidEmailSubmit" OnInvalidSubmit="HandleInvalidEmailSubmit">
            <div>
                <label for="emailField" class="label">Email</label>
                <InputText @bind-Value="Model!.Email" @attributes="EmailFieldAttributes"
                           type="email" id="emailField" autocomplete="email"
                           title="Please enter a valid email (e.g. name@example.com)." placeholder="Email"
                           required maxlength="@Constants.EmailMaxLength"
                           class="input validator w-full"/>
                <div class="mt-1 min-h-5">
                    <ValidationMessage For="@(() => Model!.Email)" class="text-error text-sm mt-1"/>
                </div>
            </div>
            <div class="modal-action">
                <button type="submit" id="submit-email-btn"
                        class="btn btn-primary">
                    Send!
                </button>
            </div>
        </EditForm>
    </div>
</dialog>

已尝试的方案

  • 将表单移至对话框外,用<div data-permanent>包裹对话框以阻止关闭,但会导致内容静态化,无法满足需求。
  • 通过JavaScript手动提交表单并更新DOM,功能正常,但不想自行编写增强加载逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 12:12:37