私のモデルには次のものがあります。
[Required]
[DataType(DataType.EmailAddress)]
public string EmailAddress {get; set;}
ただし、私のビュー (ソース) では、これは次のようにレンダリングされます。
<label for="EmailAddress">EmailAddress</label>
<input data-val="true" data-val-required="The EmailAddress field is required"
id="EmailAddress" name="EmailAddress" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="EmailAddress" data-valmsg-replace="true">
これはtype="text" ではなくtype="email"でレンダリングされるべきだと思ったので、クライアント側で検証するときに、電子メールが有効な形式でない場合はピックアップされません。
編集
さらに、if (ModelState.IsValid)を呼び出すと、電子メール アドレスの形式が正しくなくても true が返されます。そのため、ブラウザーが HTML5 をサポートしていなくても、コントローラーの IsValid が検証を強制すると考えていたでしょうが、そうではありませんか?
type="email" を強制して有効な電子メールアドレスを正しくチェックするために、モデルに他に必要なものはありますか?
ありがとうございます、
マーク