34

MVC4のモデル検証にデータ注釈を使用しており、現在StringLengthAttributeを使用していますが、最大値(現在は50に設定)を指定したくありませんが、最小の文字列長の値を指定したいと思います。

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

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

    [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; }
4

4 に答える 4

55

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

標準のデータ注釈を使用すると、いいえ。MaximumLength を指定する必要があります。他のパラメーターのみがオプションです。

そんな時は、次のような方法をお勧めします。

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

次のようなRegex (正規表現) 属性を使用することもできます。

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

詳細はこちら:正規表現を使用したパスワード強度の検証

于 2012-07-09T23:13:36.220 に答える
16

この目的のために [MinLength(7)] 属性もあります。

ソース: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.minlengthattribute(v=vs.110).aspx

于 2016-12-08T19:43:05.087 に答える
1

データ注釈を削除して、ビューの Html.TextBoxFor 要素に Html 属性を追加することを考えたことはありますか?

次のようになります。

@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 属性を追加するのが好きです。その影響がすぐにわかるからです。データベースをいじることなく、移行を使用している場合は移行とデータベースの更新を実行する必要はありません (コードファーストアプローチ)。

EditorFor を TextBoxFor に変更すると、スタイルが失われますが、簡単に修正できるはずです。スタイルをビューに追加するか、スタイルを CSS ファイルに追加するだけです。

お役に立てれば :)

于 2016-10-15T15:44:58.540 に答える