【问题标题】:How do I validate some fields some of the time?有时如何验证某些字段?
【发布时间】:2017-02-22 15:37:59
【问题描述】:

我在 .Net-Core MVC 中使用 C#,我有一个用户需要填写的表单。

页面上显示的所有字段都必须填写。我遇到的问题是表单上的某些字段是隐藏的,而其他字段是根据之前在表单上所做的选择显示的。

如果我将 [Required] 标签放在模型中的所有字段上,当我验证 ModelState 时,它​​会将未显示的字段标记为无效。

有没有办法在我尝试验证 ModelState 时,只验证页面上显示的字段而忽略已隐藏的字段?

谢谢。

【问题讨论】:

    标签: c# validation asp.net-core-mvc .net-core


    【解决方案1】:

    不幸的是,[Required] 在 MVC 中全局工作。

    您需要开发自己的验证属性。希望有人已经这样做了,但对于带有 .NET Framework 的 MVC (see the code here):

    对于具有以下形式的验证:“仅在以下情况下验证此字段 这个其他字段具有一定的价值”,我编写了 3 个属性: RequiredIf、RangeIf 和 RegularExpressionIf 继承自 验证属性。

    现在您需要翻译它以适用于 .NET Core。

    如果您正在寻找更通用的解决方案,Web Forms 框架有一个非常好的Validation group 概念。它允许您验证(或不验证)逻辑分组的属性。

    【讨论】:

      【解决方案2】:

      如果我将 [Required] 标签放在模型中的所有字段上,当我 验证 ModelState,它将未显示的字段标记为无效。

      当然,因为您设置了一个参数“必需”。从无法显示的字段中禁用该参数或make nullable

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 2011-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多