Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用傻瓜证明验证多个字段_C#_Asp.net Mvc 5_Model_Data Annotations_Foolproof Validation - Fatal编程技术网

C# 使用傻瓜证明验证多个字段

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

您好,我正在使用MVC验证我的模型,我需要对两个字段使用
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我没有将其标记为重复,因为我的声誉使我无法投票这样标记,现在我已编辑了我的回复,并添加了其他信息