-6ren">
gpt4 book ai didi

blazor - 如何在组件外部放置 Blazor EditForm 的提交按钮

转载 作者:行者123 更新时间:2023-12-03 14:57:49 24 4
gpt4 key购买 nike

Blazor 文档的 Form Validation exampleEditForm 中有一个提交按钮组件组件:

    <EditForm Model="@starship" > OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />

<p>
<label for="identifier">Identifier: </label>
<InputText id="identifier" bind Value="@starship.Identifier" />
</p>

Snip....

<button type="submit">Submit</button>

Snip...

</EditForm>

无论如何要放置提交按钮 外面EditForm标签并仍然让它“本地”触发提交 EditForm组件而不诉诸使用 JavaScript?
即代码看起来像这样:
    <!-- Want this button to submit the form in the EditForm tags-->
<button type="submit">Submit</button>

Snip...

<EditForm Model="@starship" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />

<p>
<label for="identifier">Identifier: </label>
<InputText id="identifier" bind-Value="@starship.Identifier" />
</p>
</EditForm>

最佳答案

这很简单:

  • 添加 id归因于 EditForm
  • 将提交按钮放在 EditForm 之外,并分配给它的 form属性EditForm的id .

  • 这是一个工作代码示例:

        @using System.ComponentModel.DataAnnotations;    

    <EditForm id="@MyID" Model="Model" OnValidSubmit="HandleValidSubmit">
    <DataAnnotationsValidator />

    <div class="form-group">
    <label for="name">Name: </label>
    <InputText Id="name" Class="form-control" @bind-Value="@Model.Name">
    </InputText>
    <ValidationMessage For="@(() => Model.Name)" />

    </div>
    <div class="form-group">
    <label for="body">Text: </label>
    <InputTextArea Id="body" Class="form-control" @bind-Value="@Model.Text">
    </InputTextArea>
    <ValidationMessage For="@(() => Model.Text)" />
    </div>
    </EditForm>

    <p>
    <button type="submit" form="@MyID" class="btn btn-primary">Save</button>
    <button type="button" class="btn btn-light"
    @onclick="@Cancel">Cancel</button>
    </p>

        @code
    {
    private string MyID = "myid";

    private Comment Model = new Comment();

    public async Task HandleValidSubmit()
    {
    // await Task.Delay(3000);

    await Task.Run(() =>
    {
    Console.WriteLine("Saving...");
    Console.WriteLine(Model.Name);
    Console.WriteLine(Model.Text);
    });

    }

    private void Cancel()
    {
    Console.WriteLine("Cancelling...");
    Console.WriteLine(Model.Name);
    Console.WriteLine(Model.Text);
    }

    public class Comment
    {
    [Required]
    [MaxLength(10)]
    public string Name { get; set; }

    [Required]
    public string Text { get; set; }

    }

    }

    希望这有助于...

    关于blazor - 如何在组件外部放置 Blazor EditForm 的提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55975262/

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