【问题标题】:Clear InputFields after clicked submit using Blazor使用 Blazor 单击提交后清除 InputFields
【发布时间】:2020-08-17 21:42:54
【问题描述】:

我想知道是否有人知道如何在按下保存按钮“提交”后清除所有输入字段?? 当我返回页面时,我的价值观仍然存在。

这是我正在使用的代码。

@page "/testform"
@inject BlazorApp6.Data.Person person
@inject BlazorApp6.DBContext.ValidationTestContext Context
@inject BlazorApp6.Interface.INterface Manager

<EditForm Model="@person" OnValidSubmit="@CreatePerson">
        <DataAnnotationsValidator />
        <ValidationSummary />
        <div class="form-group">
            <label for="Name">Name</label>
            <InputText @bind-Value=Person.Name class="form-control" id="Name" />
            <ValidationMessage For=@(() => Person.Name) />
        </div>
        <div class="form-group">
            <label for="Age">Age</label>
            <InputNumber @bind-Value=Person.Age class="form-control" id="Age" />
            <ValidationMessage For=@(() => Person.Age) />
        </div>
        <input type="submit" class="btn btn-primary" value="Save" />
    </EditForm>

@code {



    protected override async Task OnInitializedAsync()
    {
        person.OnChange += StateHasChanged;
    }

    private void CreatePerson()
    {

        Manager.Create(person);
        
       
    }

}

【问题讨论】:

标签: blazor blazor-server-side


【解决方案1】:

重置所有值。最简单的方法:

private void CreatePerson()
{
    Manager.Create(person);
    person = new Person();            
}

你不应该需要 StateHasChanged:

protected override async Task OnInitializedAsync()
{
    // person.OnChange += StateHasChanged;
}

否则你必须-=+=new Person()周围的事件

【讨论】:

  • 我看到你注入了 Person,这不是一个好方法。注入服务,而不是实体。
  • 当我尝试“找不到类型或命名空间名称'Person'(您是否缺少 using 指令或程序集引用?)”时,我得到了这个消息@injection 要做什么?
  • 是的,@include BlazorApp6.Data
【解决方案2】:

编写一个函数来清除输入字段

private void ClearInputFields()
{
    person.Name = string.Empty;  

}

提交成功后调用方法

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2018-06-04
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2021-07-07
    • 2019-04-04
    相关资源
    最近更新 更多