【问题标题】:Blazor Webassembly validation not support individual field validationBlazor Webassembly 验证不支持单个字段验证
【发布时间】:2020-03-18 08:15:44
【问题描述】:

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

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

例如,

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

【问题讨论】:

  • 你能发布你的代码吗

标签: validation wizard blazor stepper


【解决方案1】:

选项 1

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

选项 2

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

这可以实现,例如。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 2020-09-16
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多