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
相关产品推荐
相关产品推荐

