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

Uwe*_*eim 6 c# blazor blazor-server-side

拥有 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>
Run Code Online (Sandbox Code Playgroud)

后面有这段代码:

private EditForm _editForm;

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

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

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

我的问题

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

Pet*_*ris 6

<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
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)