在Blazor页面中,当使用EditForm和EditContext进行数据绑定时,有时可能会在SetParametersAsync中遇到问题,这可能会导致EditForm和EditContext始终为null。解决此问题的方法是使用OnInitializedAsync方法而不是SetParametersAsync。以下是示例代码:
@page "/my-page"
@inject HttpClient httpClient
@inject NavigationManager navigationManager
@code {
private MyModel myModel = new MyModel();
protected override async Task OnInitializedAsync()
{
// Initialize data here
myModel = await httpClient.GetFromJsonAsync("api/data");
}
private async Task HandleValidSubmit()
{
// Save data here
await httpClient.PostAsJsonAsync("api/data", myModel);
navigationManager.NavigateTo("/");
}
private class MyModel
{
[Required]
public string Name { get; set; }
}
}
在此示例中,我们将数据绑定到EditForm中的MyModel模型,使用OnInitializedAsync方法来初始化数据,使用OnValidSubmit事件处理程序来保存数据,并在成功后重定向到首页。这样,我们就避免了在SetParametersAsync中遇到的EditForm和EditContext的问题。