【问题标题】:Validating more than one field with Fool Proof [duplicate]使用 Fool Proof 验证多个字段 [重复]
【发布时间】:2018-09-30 03:42:15
【问题描述】:

您好,我正在使用 MVC Fool Proof Validation. 来验证我的模型,我需要使用带有两个字段的 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_BT2 时,我得到了

'System.NullReferenceException' en FoolproofValidation.dll

有人知道我必须如何处理吗?

谢谢!

【问题讨论】:

标签: c# asp.net-mvc-5 model data-annotations foolproof-validation


【解决方案1】:

这里已经回答了这个问题:

Foolproof multiple validators on the same fieldsStephen Muecke

Foolproof.RequiredIfNotAttribute 派生自 Foolproof.ModelAwareValidationAttribute(又派生自 System.ComponentModel.DataAnnotation.ValidationAttribute)。 ModelAwareValidationAttribute 标有[AttributeUsage(AttributeTargets.Property)]Refer source code。默认情况下,AttributeUsageAllowMultiple 参数为false,这意味着您只能将属性应用于属性一次。您已尝试应用 3 次,因此出现错误。

拥有true 并允许它被多次应用可能会导致设置不显眼验证使用的$.validator.methods$.validator.unobtrusive.adapters 函数时出现问题。

您将需要使用其他一些验证属性或创建自己的实现IClientValidatableValidationAtribute,或依赖服务器端验证。

您可以在模型属性中实现自定义验证。请参阅本教程:Creating Custom Validation Attribute in MVC 创建自定义验证属性来完成您需要的工作,如果使用 IClientValidatable ,您应该在其中编写自己的 jquery 验证脚本以在 MVC 框架模式下进行客户端验证,这也在其中进行了说明。

祝你好运,问候!

【讨论】:

  • 当我查看您的答案时,我没有意识到您正在链接到另一个 SO 答案。这表明该问题是重复的,因此您确实应该将该问题标记为重复,而不是尝试复制答案。顺便说一句,我没有给你投反对票,但链接到其他 SO 答案会让你对其他用户的此类行为持开放态度。
  • @DeanOC 我没有将其标记为重复,因为以我的声誉我无法投票将其标记为这样,现在我已经编辑了我的回复并添加了其他信息
猜你喜欢
  • 1970-01-01
  • 2015-02-07
  • 2021-10-06
  • 2019-01-06
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
相关资源
最近更新 更多