c# - 有时我如何验证某些字段?

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

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

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

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

有没有一种方法,当我尝试验证 ModelState 时,我可以只验证页面上显示的字段而忽略已隐藏的字段?

谢谢。

最佳答案

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

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

For validations that has the form of: “Validate this field only when this other field has certain value”, I have coded 3 attributes: RequiredIf, RangeIf and RegularExpressionIf that inherints from ValidationAttribute.

现在您需要翻译它以便为 .NET Core 工作。

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

关于c# - 有时我如何验证某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42395896/

相关文章:

c# - 如何在 C# 中编写事件和事件处理程序?

c# - 操作过滤器中的 session 变量

java - 如何使用 Apache IBANCheckDigit 检查 IBAN 号码?

ruby-on-rails - 服务对象的验证和错误处理

asp.net-core - MVC 6 中多个网站的通用 wwwroot 文件夹

azure - 为 .net 6 Web 应用程序配置 App Insights

c# - 防止对话框多次显示

c# - 在 Windows 7 上更改程序音量

php - 验证为表单的属性

c# - 按字符串属性对对象进行排序,最后为空字符串