首页 > 解决方案 > Blazor Webassembly 验证不支持单个字段验证

问题描述

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

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

例如。,

我有一个使用步进器组件的向导模块(可能是 4 个步骤)。这里第一步有一些控制,比如客户详细信息,第二步有一些控制,比如获取联系方式等等。所有控件都对应一个带有注释的模型类,但使用步进器组件通过下一步按钮逐步验证。我如何实现这一目标?

标签: validationwizardblazorstepper

解决方案


选项1

将您的视图模型划分为几个子模型“MySubmodel1”、“MySubmodel2”等。然后在您的类似向导的表单中,有多个<EditForm>元素,每个元素指定相应的子模型,即。在第一<EditForm>组 Model=@MySubmodel1 中,在第二<EditForm>组 Model=@MySubmodel2 中,等等。

选项 2

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

这可以实现,例如。

  • 通过使用自定义验证属性,例如讨论过的“RequiredIf”。在StackOverflow 上

或者

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

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


推荐阅读