提交表格后,如何删除blazor中的绿色轮廓输入框? 成功提交后,输入的修改字段仍为绿色轮廓。
在我的页面上,成功提交后可能会加载另一个数据集。 新数据已正确加载到输入字段中,但是边框在输入字段中仍然是绿色的,在先前的数据集中已对其进行了修改。
我在editForm的OnValidSubmit上使用“ StateHasChanged()”进行了尝试,但没有成功;
还有一个通过onclick“ StateHasChanged()”触发的按钮没有帮助。 在我看来,“ StateHasChanged()”不会从blazor的输入字段中删除绿色边框。
而且不想用“ navigateTo”或类似的东西重新装满整个火锅包。
答案 0 :(得分:1)
嗨,欢迎来到社区!通常,最好的做法是发布一个最小的可复制示例,以供社区使用,因此,如果可以的话,请这样做。我会做一些假设,因为我想我知道发生了什么,并且您可以从中得出结论。如果这是我的想法,则在提交有效的表单后,需要刷新表单的EditContext。
假设您的表单具有模型属性:
public FormModel Model { get; set; }
有两种方法可以将模型附加到<Editform ... >
组件。一个使用Model
参数,另一个使用EditContext
参数。我们将使用后者,因为它使我们可以控制代码块中的上下文。
因此您的剃刀文件将开始如下所示:
<EditForm EditContext="Context" OnValidSubmit="HandleValidSubmit" >
..... form body and submit button
</EditForm>
@code {
public FormModel Model { get; set; } = new FormModel();
public EditContext Context { get; set; }
private void HandleValidSubmit()
{
//Whatever needs to be done on valid submit
// Refresh the Editcontext
Context = new EditContext(Model);
// You may or may not need this call
StateHasChanged();
}
protected override async Task OnInitializedAsync()
{
// Other initialization code, set your initial form model, etc.
// Set the form edit context with your model.
Context = new EditContext(Model);
}
}
我们在初始化期间将EditContext设置为您要用于表单的模型,并且所有内容都应正常运行。验证大纲是从EditContext驱动的,因此,如果您在有效表单上提供新的编辑上下文,则大纲将消失。
希望这会有所帮助!
答案 1 :(得分:1)
您的HandleValidSubmit方法应如下所示:
private void HandleValidSubmit()
{
EditContext.MarkAsUnmodified();
}
希望这行得通...
答案 2 :(得分:1)
谢谢enet和Nik, 您的两个答案结合在一起就可以了。
首先,我必须像Nik所写的那样将EditForm的EditContext绑定到“ Context”属性。 有效提交后,我将调用enet编写的“ MarkAsUnmodified”。
<EditForm EditContext="Context" OnValidSubmit="@MyInsertMethodAsync">
protected override async Task OnInitializedAsync()
{
Context = new EditContext(MyViewModel);
await MyViewModel.InitializePropertiesAsync();
}
private async Task MyInsertMethodAsync()
{
await MyViewModel.InsertMyStuffAsync();
Context.MarkAsUnmodified();
}