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

Blazor Webassembly validation not support individual field validation

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

实现了 jquery

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

例如

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

选项 1

将您的视图模型分成几个子模型 "MySubmodel1"、"MySubmodel2" 等。 然后在你的向导形式中,有多个 <EditForm> 元素,每个元素指定相应的子模型,即。在第一个 <EditForm> 中设置 Model=@MySubmodel1,在第二个 <EditForm> 中设置 Model=@MySubmodel2,等等

选项 2

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

这可以实现例如

  • 通过使用像 "RequiredIf" 这样的自定义验证属性来讨论,例如。这里 on Whosebug

  • 通过实施 IValidatableObject(讨​​论如 here)- 在 Validate() 方法中,编写代码,为没有实际状态的视图模型字段生成 return ValidationResult当前步骤需要。

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