gpt4 book ai didi

c# - 客户端 Blazor 表单提交两次

转载 作者:行者123 更新时间:2023-12-02 19:19:35 26 4
gpt4 key购买 nike

在客户端 blazor 应用程序中,我有一个提交的表单。在表单的 onValidSubmit 中,我向服务器发出异步调用以发布数据。当帖子回来时,我告诉模式窗口关闭。但是,直到我再次单击提交按钮后,模式窗 Eloquent 会关闭。如果我删除异步帖子,则模式窗口将在第一次提交时关闭。有谁知道这里会发生什么?

带有表单的页面

<ModalWindow  @bind-ShowWindow="ShowAddwindow">
<Content>
<EditForm Model="@Orig" OnValidSubmit="@AddOrig">
<DataAnnotationsValidator />
<ValidationSummary />
<ServerSideValidator />

<InputText @bind-Value="Orig.Name" id="origName" />
<button type="submit" class="btn btn-primary">Add</button>
</EditForm>
</Content>
</ModalWindow>

private async void AddOrig()
{
if(!string.IsNullOrEmpty(Orig.Name))
{
ResponseContent<bool> result = await httpUtil.PostRequest<bool>("postData", Orig);

switch(result.Status)
{
case System.Net.HttpStatusCode.Unauthorized:

break;

case System.Net.HttpStatusCode.BadRequest:

serverSideValidator.DisplayErrors(result.Errors);

break;

default:
ShowAddwindow = false;
Orig = new Organization();
break;
}


}
}

莫代尔 Razor

<div class="modal" style="display: @_displayType;">

<!-- Modal content -->
<div class="modal-content">
<span class="close" @onclick="Close">&times;</span>
<div>@Content</div>
</div>
@code {
private bool _showWindow;
[Parameter]
public bool ShowWindow
{
get => _showWindow;
set
{
_showWindow = value;
_displayType = value ? "block" : "none";
}
}

[Parameter]
public EventCallback<bool> ShowWindowChanged { get; set; }

...
}

最佳答案

此代码:private async void AddOrig()

应该是私有(private)异步任务AddOrig()

如果您不使用 Task 作为返回对象,则运行时无法知道您的异步调用何时完成,其结果是没有渲染(因为 StateHasChanged 方法不会自动调用),这意味着您的模式仍然可见

关于c# - 客户端 Blazor 表单提交两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63228806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com