Blazor Webassembly验证不支持单个字段验证

时间:2019-11-22 09:27:19

标签: validation wizard blazor stepper

Blazor验证不支持单个字段验证,它仅一次验证上下文中的所有字段。如果我一次在分开的选项卡或步进器中加载页面,则部分验证控件,而不是部分字段。可能吗?请给我解决方案。但是我在jQuery中通过$('#ShippingInfo')。validate()。element('#ShippingAddress_StateID');

但是当按下提交按钮时,blazor会验证所有字段。

例如

我有一个使用步进器组件的类似向导的模块(可能是4个步骤)。在这里,第一步具有一组控件,例如客户详细信息,第二步具有一组控件,例如获取联系人详细信息,等等。所有控件都与带有注释的一个模型类相对应,但使用stepper组件通过“下一步”按钮逐步进行验证。我该如何实现?

1 个答案:

答案 0 :(得分:0)

选项1

将视图模型分为几个子模型“ MySubmodel1”,“ MySubmodel2”等。 然后,以类似于向导的形式,具有多个<EditForm>元素,每个元素都指定对应的子模型,即。在第一个<EditForm>集Model = @ MySubmodel1中,在第二个<EditForm>集Model = @ MySubmodel2中,依此类推。

选项2

此选项基于视图模型的条件验证。对于完整的类似向导的表单,您将只使用1个viewmodel。在视图模型中添加一个属性“ StepNumber”,该属性将标识当前步骤(步骤1,步骤2,...),并根据实际步骤定义相应字段的条件验证。

这可以实现,例如。

  • 通过使用自定义的验证属性(例如“ RequiredIf”)进行了讨论。这里on StackOverflow

  • 通过实现IValidatableObject(例如,讨论here)-在Validate()方法中,编写一个代码,该代码将为不具有当前步骤要求的实际状态的视图模型字段产生返回ValidationResult。 / li>

最后,在您的表单中,处理上一步/下一步按钮时调整当前步骤。