首页 > 解决方案 > 如何以编程方式提交 Blazor 表单?

问题描述

拥有一个 BlazorEditForm和一个包含InputTextArea(即多行文本框),我确实想在用户按下Ctrl+时验证并提交表单,Enter就像他会单击提交按钮一样。

我已经成功连接了键盘处理程序,如下所示:

<EditForm Model="@myModel" Format="g" OnValidSubmit="@Store" @ref="_editForm">
    <InputTextArea 
        onkeypress="@(async e => await myKeyPress(e))"
        @bind-Value="myModel.Foo" />
    <button type="submit">Store it</button>
</EditForm>

有了这段代码:

private EditForm _editForm;

private async Task myKeyPress(KeyboardEventArgs key)
{
    if (key.CtrlKey && key.Code == @"Enter")
    {
        _editForm.??? // What to call here?
    }
}

不幸的是,我在 EditForm 类中没有看到可以调用来提交验证表单的方法,就好像用户会单击提交按钮一样。

我已经看过这个这个SO 问题,但没有成功。

我的问题

如何以编程方式提交和验证 Blazor 表单?

标签: c#blazorblazor-server-side

解决方案


<EditForm Context=MyCurrentEditContext>
  <InputTextArea 
        onkeypress="@(async e => await myKeyPress(MyCurrentEditContext, e))"
        @bind-Value="myModel.Foo" />
    <button type="submit">Store it</button>
</EditForm>

@code
{
private async Task myKeyPress(EditContext editContext, KeyboardEventArgs key)
{
    if (key.CtrlKey && key.Code == @"Enter")
    {
        if (editContext.Validate())
        {
          ... Do stuff if valid
        }
    }
}
}

推荐阅读