9

ASP.NET MVC4 プロジェクトでデータ注釈を使用して、電子メール フィールドと電話フィールドでクライアント側の検証を実行しています。電子メールはクライアントで正常に検証されていますが、電話は検証されていません。無効な文字を入力でき、フォームの送信時にのみ警告が表示されます (文字が入力された直後ではなく)。

モデルでは:

[Required(ErrorMessage = "Email is required")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
[Display(Name = "Email")]
public string Email{ get; set; }

[Required(ErrorMessage = "Mobile is required")]
[DataType(DataType.PhoneNumber)]
[Phone]
[Display(Name = "Mobile number")]
public string Mobile { get; set; }

ビューでは、正しいスクリプト参照を含めていると思います:

<script type="text/javascript" src="~/Scripts/jquery.validate.min.js" ></script
<script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js" ></script>

..そしてhtmlヘルパーを使用します(明確にするためにここでは省略したクラス属性を適用しているため、EditorForではなくTextBoxForを使用しています)

@Html.LabelFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
@Html.TextBoxFor(model => model.Email, new { @type = "email" })       

@Html.LabelFor(model => model.Mobile)
@Html.ValidationMessageFor(model => model.Mobile)
@Html.TextBoxFor(model => model.Mobile, new { @type = "phone" }) 

私は何が欠けていますか?

4

4 に答える 4

2

MVC 4 には、EmailAddress の表示テンプレートが組み込まれていますが、PhoneNumber はありません。のカスタム DisplayTemplate を作成する必要があります[DataType(DataType.PhoneNumber)]

次のファイルを追加します (おそらく、サブフォルダー DisplayTemplates を作成する必要があります)。
Views\Shared\DisplayTemplates\PhoneNumber.cshtml

@model System.String
@if (Model != null)
{
    @:@System.Text.RegularExpressions.Regex.Replace(@Model, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3")
}
于 2014-06-27T15:15:25.667 に答える
0

問題は、電話の種類がサポートされていないことだと思います。w3schoolsで電話の種類のサポートを確認する

于 2013-11-21T13:16:13.570 に答える