入力フィールドのプレースホルダーを持つフォームがあります。html5 プレースホルダー属性と JavaScript プレースホルダー フォールバックを使用します。私は控えめな検証を次のように使用します。
[DisplayName("")]
[Required(ErrorMessage = "Please enter a name")]
[StringLength(maximumLength: 20, MinimumLength = 1, ErrorMessage = "max length is 20 chars.")]
public string UserName { get; set; }
[DisplayName("")]
[Required(ErrorMessage = "Please enter a comment.")]
[StringLength(maximumLength: 350, MinimumLength = 1, ErrorMessage = "max length is 350 chars.")]
public string CommentText { get; set; }
問題は、IE を使用する場合、プレースホルダーが入力フィールドの文字としてカウントされるため、検証が行われず、何も入力されていないときにフォームを送信できることです。
指定された文字列を制限する条件を UserName 注釈に追加する方法はありますか。たとえば、「ここにユーザー名を入力してください..」
可能であれば、カスタム プロパティ バリデータを作成することは避けたいと思います。
前もって感謝します。
編集。正規表現を使用して解決:
[RegularExpression("^((?!My_Placeholder_Text).|\n)*$", ErrorMessage = "Please enter text")]