我在 .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/