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属性の検証ロジックにあり、値を持つ文字列に対しても true を返しますnull。ここでは実装:

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 に答える