c# - 如何以编程方式提交 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 类中没有看到可以调用来提交和验证表单的方法,就好像用户会单击提交按钮一样。
我的问题
如何以编程方式提交和验证 Blazor 表单?
解决方案
<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
}
}
}
}
推荐阅读
- spring-boot - javaMailSender Method can not be resolved
- angular - ERROR TypeError: Cannot read property 'appendChild' of null
- html - How do I stop a frame from appearing inside another frame?
- ansible - 无法使用 win_updates 进行修补
- android - 更换机器后未在设备上安装应用程序
- python - Python 函数在 shell 中运行和作为 .py 文件运行时的行为不同
- java - 尝试读取整数和字符串文件并出现错误
- c++ - for each 和 for_each 有什么区别?
- vb.net - 使用 vb.net 显示进程的线程列表
- python - 将列表赋值给一个变量后跟逗号相当于访问列表的入口,这种Python特性叫什么名字