Blazor。OnSubmit: 如何访问表单输入值并显示ValidationMessage?

问题描述 投票:0回答:1

我知道当使用 OnSubmit 用于处理表单提交(而不是 OnValidSubmitOnInvalidSubmit),我们负责确保表单有效(通过调用 EditContext.Validate() 方法)。)

考虑以下示例代码。

<EditForm Model=@Person OnSubmit=@FormSubmitted>
  <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>
  <input type="submit" class="btn btn-primary" value="Save"/>
</EditForm>

现在假设我们在 FormSubmitted function:我的问题是。

  1. 我们怎样才能访问from的输入值? InputText 与id。"Name") (数据绑定是唯一的方式吗?)
  2. 因为我们负责验证表单,所以唯一的方法就是显示出了 ValidationMessage 是叫 EditContext.Validate() 方法(如果表单确实无效),或者我们可以决定并控制哪个 ValidationMessage 来显示?
blazor blazor-client-side
1个回答
0
投票

你所面临的问题是由于在EditContext.Validate返回的时候,验证已经发生,并且验证信息正在显示。不幸的是,你对此无能为力,尤其是因为你无法访问和操作存储这些消息的ValidationMessageStore对象。Steve Anderson告诉我,如果有更多的人(除了我之外)要求提供这样的功能,就会提供。我告诉他,这个功能非常重要......这是几个月前的事了,你不是第一个表明这个功能是必不可少的人。你可以去github上发布一个问题,要求提供这个功能。

然而,如果你认为你不能忍受所有的验证信息同时显示(有些人可能会说这是可取的),我想你可以实现ValidationMessage组件来显示你想要的内容。

如果我是你,我不会这么做。通常情况下,显示所有需要填写的字段的消息是比较可取的,我想当用户点击提交按钮时,他们通常会填写大部分的字段。

希望能帮到你...


0
投票

1)是的模型绑定是方法2)验证消息本身来自于数据模型中的dataannotations。

© www.soinside.com 2019 - 2024. All rights reserved.