Blazor:OnSubmit:如何访问表单输入值并显示 ValidationMessage?
Blazor: OnSubmit: How to access form input values and show ValidationMessage?
我知道当使用 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
函数中:
我的问题是:
- 我们如何访问 from 的输入值? (在上面的代码中,使用 ID 访问
InputText
的值:"Name"
)(数据绑定是唯一的方法吗?)
- 由于我们负责验证表单,显示
ValidationMessage
的唯一方法是调用 EditContext.Validate()
方法(如果表单确实无效)或者我们可以决定并控制哪个ValidationMessage
出现?
1) 是的,模型绑定是可行的方法
2)验证消息本身来自数据模型中的数据注释
您遇到的问题是因为到 EditContext.Validate returns 时,验证已经发生,并且正在显示验证消息。不幸的是,您对此无能为力,尤其是因为您无法访问和操作存储这些消息的 ValidationMessageStore 对象。 Steve Anderson 告诉我,如果有更多人(除了我)提出要求,将会提供这样的功能。我告诉他这个功能非常重要……那是几个月前的事了,你不是第一个表明这个功能必不可少的人。您可以转到 github 和 post 一个问题,请求提供此功能。
但是,如果您认为您不能忍受同时显示所有验证消息(有些人可能会说这是可取的),我想您可以实现 ValidationMessage 组件以仅显示内容你想要的。
如果我是你,我不会那样做。通常更希望显示所有需要填写的字段的消息,我猜想当用户单击提交按钮时,他们通常会填写大部分字段。
希望这对您有所帮助...
我知道当使用 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
函数中:
我的问题是:
- 我们如何访问 from 的输入值? (在上面的代码中,使用 ID 访问
InputText
的值:"Name"
)(数据绑定是唯一的方法吗?) - 由于我们负责验证表单,显示
ValidationMessage
的唯一方法是调用EditContext.Validate()
方法(如果表单确实无效)或者我们可以决定并控制哪个ValidationMessage
出现?
1) 是的,模型绑定是可行的方法 2)验证消息本身来自数据模型中的数据注释
您遇到的问题是因为到 EditContext.Validate returns 时,验证已经发生,并且正在显示验证消息。不幸的是,您对此无能为力,尤其是因为您无法访问和操作存储这些消息的 ValidationMessageStore 对象。 Steve Anderson 告诉我,如果有更多人(除了我)提出要求,将会提供这样的功能。我告诉他这个功能非常重要……那是几个月前的事了,你不是第一个表明这个功能必不可少的人。您可以转到 github 和 post 一个问题,请求提供此功能。
但是,如果您认为您不能忍受同时显示所有验证消息(有些人可能会说这是可取的),我想您可以实现 ValidationMessage 组件以仅显示内容你想要的。
如果我是你,我不会那样做。通常更希望显示所有需要填写的字段的消息,我猜想当用户单击提交按钮时,他们通常会填写大部分字段。
希望这对您有所帮助...