【问题标题】:Custom Range validator on mvc3mvc3 上的自定义范围验证器
【发布时间】:2013-10-25 14:12:28
【问题描述】:

我想做一个自定义范围验证器,但我不确定如何进行。 仅当布尔值保持为假时,我才需要范围验证器处于活动状态,如果布尔值为真,则不应应用验证。类似于防呆验证的RequiredIfFalse。

[RequiredIfFalse("UnEquip", ErrorMessage = "Le champ 'Nombre de salariés' doit être     renseigné")]
    [Range(1, 1000000, ErrorMessage = "Le nombre de salariés doit être compris entre 1 et 1000000")]
    public int Salaries { get; set; }

类似这样,但结合了这两种验证。

提前致谢

【问题讨论】:

  • 您的布尔值是来自另一个属性还是使用自定义 RangeAttribute 定义的常量?
  • 布尔值在模型中,它是视图上的一个复选框。

标签: asp.net-mvc-3 validation range customvalidator


【解决方案1】:

您需要在模型级别执行此验证,因为它同时包含多个属性。检查此链接,类似问题:Make the email field required based on the dropdown list value selection

在您的情况下,Validate 将测试您的布尔值和 Salaries 值,如果 falseSalaries > 1000000Salaries < 1,您将返回一个包含错误消息的新 ValidationResult

【讨论】:

  • 谢谢,它几乎就像一个魅力。但是当验证消息应该弹出时我有一个小问题。只有在没有自定义验证的情况下我在字段上没有其他验证错误时才会弹出。我正在使用验证摘要,使用 JQuery.validation.js 我是否必须在 validation.js 上添加一些修改,以便同时显示所有错误消息?
  • 我怀疑您的其他验证错误是在客户端触发的。不幸的是,模型级别的验证仅适用于服务器端。它可能会在未来发生变化,但现在它是如何工作的:/
  • 所以我应该禁用客户端验证,还是找到另一种验证方式?我应该搜索如何关闭客户端验证并对此进行测试
  • 即使关闭了客户端验证,问题依然存在。
  • 您能告诉我们您是如何在您的模型上定义其他验证规则的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2012-09-08
相关资源
最近更新 更多