让我们考虑客户端Blazor应用程序中的以下页面:
@page "/test"
<div id="modalDialog" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<EditForm Model="@model" OnSubmit="@SubmitHandler">
<div class="form-group d-flex justify-content-between">
<label class="col-form-label col-3" for="editDT">Time</label>
<InputText bind-Value="@model" id="editDT" Class="form-control" />
</div>
<button type="submit" class="btn btn-primary" @*data-dismiss="modal"*@>Submit</button>
</EditForm>
</div>
</div>
</div>
</div>
<button data-toggle="modal" data-target="#modalDialog" class="btn btn-primary">Open</button>
@functions {
private string model { get; set; } = "Model";
private void SubmitHandler()
{
Console.WriteLine("Submit");
}
}
当我点击打开按钮时,模态框出现了,符合预期。然后在模态框中点击提交按钮,“Submit”被打印在浏览器控制台中,也符合预期。
但是,我需要在点击提交时关闭模态框,所以我将data-dismiss属性的注释去掉。现在,模态框如预期关闭,但是“Submit”处理程序不再被调用(浏览器控制台保持为空)。
1)这是预期的行为吗?
2)如果是,则是否有一种方法可以在没有JavaScript互操作的情况下在提交处理程序中关闭模态框?
3)如果不是,是否有另一种方法可以同时关闭模态框并在单击提交按钮时调用“Submit”处理程序,同样不需要使用js互操作?