私は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; }
どんな助けも大歓迎です。
最小の長さのみを指定する方法はありますか?おそらく別の属性を使用できますか?
標準データアノテーションを使用して、いいえ。MaximumLengthを指定する必要があります。他のパラメーターのみがオプションです
このような場合、次のようなものをお勧めします。
[StringLength(int.MaxValue, MinimumLength = 7)]
次のような正規表現(正規表現)属性を使用することもできます。
[RegularExpression(@"^(?:.*[a-z]){7,}$", ErrorMessage = "String length must be greater than or equal 7 characters.")]
詳細はこちら: 正規表現によるパスワード強度検証
この目的のために[MinLength(7)]属性もあります。
データ注釈を削除し、ビューの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ファイルにスタイリングを追加したりできます。
お役に立てれば :)
素晴らしい仕事のフランソワ、データ注釈を使用して入力フィールドのmaxlength属性を発行することはできないようです。クライアント側の検証を提供するだけです。 HTML属性でmaxlengthを使用すると、maxlengthが正しく設定された入力フィールドが作成されました。
@Html.EditorFor(model => model.Audit_Document_Action, new { htmlAttributes = new { @class = "form-control", @maxlength = "10" } })