C# 使用傻瓜证明验证多个字段
您好,我正在使用MVC验证我的模型,我需要对两个字段使用C# 使用傻瓜证明验证多个字段,c#,asp.net-mvc-5,model,data-annotations,foolproof-validation,C#,Asp.net Mvc 5,Model,Data Annotations,Foolproof Validation,您好,我正在使用MVC验证我的模型,我需要对两个字段使用RequiredIfNotEmpty,但我遇到了一些问题 型号 public class Conexionado{ [DisplayName("Conexión")] [RequiredIfNotEmpty("Conex_BT2_Pos", ErrorMessage = "Error!")] [RequiredIfNotEmpty("Conex_BT2_N", ErrorMessage = "Conex_BT2 C
RequiredIfNotEmpty
,但我遇到了一些问题
型号
public class Conexionado{
[DisplayName("Conexión")]
[RequiredIfNotEmpty("Conex_BT2_Pos", ErrorMessage = "Error!")]
[RequiredIfNotEmpty("Conex_BT2_N", ErrorMessage = "Conex_BT2 Cant be empty if Conex_BT2_N isnt!")]
public string Conex_BT2 { get; set; }
public string Conex_BT2_N { get; set; }
[DisplayName("Ángulo BT")]
[Range(0, 11, ErrorMessage = "Incorrect number")]
public int? Conex_BT2_Pos { get; set; }
}
我试过一些类似的
[RequiredIfNotEmpty("Conex_BT2_Pos , Conex_BT2_N", ErrorMessage = "Error!")]
[RequiredIfNotEmpty("Conex_BT2_Pos || Conex_BT2_N", ErrorMessage = "Error!")]
但在这种情况下,我可以编译,但当我尝试使用Conex\u BT2
时
'System.NullReferenceException'en-GoodwerProfect Validation.dll
有人知道我该怎么处理吗
谢谢 这个问题已经在这里得到了回答: 借
万无一失的.RequiredIfNotAttribute
源于万无一失的.ModelAwareValidationAttribute
(后者又源于系统.ComponentModel.DataAnnotation.ValidationAttribute
)ModelAwareValidationAttribute
标记为[AttributeUsage(AttributeTargets.Property)]
。默认情况下,AttributeUsage
的AllowMultiple
参数为false
,这意味着您只能对属性应用一次属性。您已尝试应用它3次,因此出现错误
使其为true
并允许多次应用它可能会在设置$.validator.methods
和$.validator.unobtrusive.adapters
函数时产生问题,这些函数用于unobtrusive validation
您需要使用一些其他验证属性,或者创建自己的实现IClientValidatable
的validationAttribute
,或者依赖服务器端验证
您可以在模型属性中实现自定义验证。请参阅本教程:要创建自定义验证属性来完成所需的工作,如果使用IClientValidatable,则应在MVC框架模式下编写自己的jquery验证脚本,以进行客户端验证,本教程也对此进行了说明
祝你好运,祝贺你 您需要创建自己的自定义验证属性。解释为什么不能多次应用相同的
ValidationAttribute
。要获得一篇好文章来帮助您入门,请参阅。试一试,如果你仍然有问题,发布你尝试过的内容。当我回顾你的答案时,我没有意识到你正在链接到另一个答案。这表明问题是重复的,因此您确实应该将问题标记为重复,而不是尝试复制答案。顺便说一句,我没有给你下一票,但链接到其他SO答案将使你对其他用户的此类操作敞开大门。@DeanOC我没有将其标记为重复,因为我的声誉使我无法投票这样标记,现在我已编辑了我的回复,并添加了其他信息