【问题标题】:specifying min length if field has data如果字段有数据,则指定最小长度
【发布时间】:2013-08-24 17:32:21
【问题描述】:

如果有人输入一个值,我需要控制一个具有最小长度的字段,但如果他们没有输入任何内容,我不希望表单告诉他们有一个最小值。

这就是我所拥有的:

[Required]
[StringLength(15, ErrorMessage = "Please supply at least {2} characters.", MinimumLength = 3)]
[Display(Name = "Last name on account or first part of the company's name")]
public string LastName { get; set; }

我只需要它也允许空格,或者如果输入数据,则要求它至少为 3 个字符..

有什么建议吗?

【问题讨论】:

标签: asp.net-mvc model


【解决方案1】:

问题在于StringLength 属性的验证逻辑,对于具有null 值的字符串也返回true,这里是实现:

public override bool IsValid(object value)
{
  this.EnsureLegalLengths();
  int num = value == null ? 0 : ((string) value).Length;
  if (value == null)
    return true;
  if (num >= this.MinimumLength)
    return num <= this.MaximumLength;
  else
    return false;
}

您使用的Required 属性也没有帮助:-)。

无论如何,您可以为您的场景做的唯一一件事就是创建一个自定义属性以使用您需要的逻辑来验证 LastName,这里是一个 link 到一个 MVC3 示例,或者您可以尝试谷歌搜索,有一个例子很多,实现起来也不难。

【讨论】:

  • 我需要做的就是删除所需的。忽略了 100 次...感谢您的帮助!
猜你喜欢
  • 2019-07-16
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多