2017-02-22 107 views
2

我在.NET核心MVC中使用C#,我有一个表格,用户需要填写。我如何在某些时候验证某些字段?

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

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

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

谢谢。

回答

0

如果我把[必填]标签上的所有字段的模型,当我 验证的ModelState,它标志了不显示的字段为无效。

当然因为你设置了一个参数“必需”。从字段中禁用该参数可以不显示或make nullable

1

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

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

为了验证有以下形式:“验证,只有当 这等领域具有一定的价值这一领域”,我已经编写了3个属性: RequiredIf,RangeIf和RegularExpressionIf表示从 继承ValidationAttribute。

现在您需要翻译它才能使用.NET Core。

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