0

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

这就是我所拥有的:

[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 个字符。

有什么建议么?

4

1 回答 1

2

问题在于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您需要的逻辑,这里是一个 MVC3 示例的链接,或者您可以尝试谷歌搜索,有很多示例并且不难实施。

于 2013-08-24T17:45:01.563 回答