如果字段有数据,则指定最小长度

时间:2013-08-24 17:32:21

标签: asp.net-mvc model

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

这就是我所拥有的:

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

有什么建议吗?

1 个答案:

答案 0 :(得分: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,这里是link到MVC3示例,或者您可以尝试使用Google搜索,有很多例子,并不难实现。