22

MVC4でモデルの検証にデータ注釈を使用していますが、現在StringLengthAttributeを使用していますが、最大値(現在50に設定されています)を指定する必要はありませんが、最小値文字列の長さの値。DataAnnotations StringLength属性MVC - 最大値なし

最小の長さだけを指定する方法はありますか?おそらく別の属性を使うことができますか?

私の現在のコードは次のとおりです。

[Required] 
    [DataType(DataType.Password)] 
    [Display(Name = "Confirm New Password")] 
    [StringLength(50, MinimumLength = 7)] 
    [CompareAttribute("NewPassword", ErrorMessage = "The New Password and Confirm New Password fields did not match.")] 
    public string ConfirmNewPassword { get; set; } 

すべてのヘルプははるかに高く評価されます。

答えて

34

最小長のみを指定する方法はありますか?恐らく別の 属性を使用できますか?

標準データ注釈を使用して、いいえ。最大長を指定する必要があります。他のパラメータのみがオプションです。このような場合には

、私はこのようなものをお勧めしたい:この上

[RegularExpression(@"^(?:.*[a-z]){7,}$", ErrorMessage = "String length must be greater than or equal 7 characters.")] 

より:また、このような正規表現(正規表現)の属性を使用することができます

[StringLength(int.MaxValue, MinimumLength = 7)] 

をここでは:Password Strength Validation with Regular Expressions

+0

ありがとうございます。私はあなたが示唆したように文字列の長さを制御する正規表現を使用することに頼ってきました。 – davey1990

1

データアノテーションを削除し、VieのHtml.TextBoxFor要素にHtml属性を追加することを考えましたか? w?

あなたが選択した最小長さ
@Html.TextBoxFor(model => model.Full_Name, new { htmlAttributes = new { @class = "form-control", @minlength = "10" } }) 

または

@Html.TextBoxFor(model => model.Full_Name, new { @class = "form-control", @minlength = "10" } }) 

10:

は次のようになります。

私はすぐにその影響を見ることができるので、私のビューにhtml属性を追加するのが好きです。データベースを煩わせることなく、移行を使用する場合はマイグレーションおよびデータベースの更新を実行する必要はありません(コードの最初のアプローチ)。

EditorForceをTextBoxForに変更すると、スタイリングが緩くなりますが、簡単に修正する必要があります。また、ビューにスタイルを追加したり、CSSファイルにスタイリングを追加することもできます。

・ホープこのことができます:)

関連する問題