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

Blazor:OnSubmit:如何访问表单输入值并显示ValidationMessage?,blazor,blazor-client-side,Blazor,Blazor Client Side,我知道当使用OnSubmit处理表单提交时(而不是OnValidSubmit和OnInvalidSubmit),我们负责确保表单有效(通过调用EditContext.Validate()方法) 考虑以下示例代码: <EditForm Model=@Person OnSubmit=@FormSubmitted> <DataAnnotationsValidator/> <ValidationSummary/> <div class="form-g

我知道当使用
OnSubmit
处理表单提交时(而不是
OnValidSubmit
OnInvalidSubmit
),我们负责确保表单有效(通过调用
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
函数中: 我的问题是:

  • 我们如何从中获取输入的值?(在上面的代码中,访问id为“
    ”Name“
    ”的
    InputText
    的值)(数据绑定是唯一的方法吗?)
  • 由于我们负责验证表单,显示
    ValidationMessage
    的唯一方法是调用
    EditContext.Validate()
    方法(如果表单确实无效),或者我们可以决定并控制显示哪个
    ValidationMessage
  • 1) 是的,模型绑定是一种方式
    2) 验证消息本身来自数据模型中的DataAnnotation

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

    但是,如果您认为不能同时显示所有验证消息(有些人可能会说这是可取的),那么我想您可以实现ValidationMessage组件,只显示您想要的内容

    如果我是你,我就不会那样做。通常更希望显示所有需要填写的字段的消息,我猜当用户单击submit按钮时,他们通常会填写大部分字段


    希望这有助于

    关于#2:我知道验证消息的来源,我想知道是否可以控制在处理函数中显示哪个消息(因为调用
    Validate()
    将显示所有消息)。感谢分享有关引擎盖下行为的信息;我希望这个功能在下一个版本中可用。我不相信他们没有公开错误消息的键和值。啊