33

正規表現を使用して電話番号を検証し、無効な番号または電話番号が送信されたときにエラーを返そうとしています。

MVC コード:

<ol class="row">
    <li class="cell" style="width: 20%;">Phone Number:</li>
    <li class="cell last" style="width: 60%;">
        @Html.TextBoxFor(model => model.PhoneNumber, new { @class = "textbox" }) 
        @Html.ValidationMessageFor(model => model.PhoneNumber)
    </li>
</ol>

C# コード:

[DataType(DataType.PhoneNumber)]
[Display(Name = "Phone Number")]
[Required(ErrorMessage = "Phone Number Required!")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$",
                   ErrorMessage = "Entered phone format is not valid.")]
public string PhoneNumber { get; set; }

ただし、入力ボックスには、送信された電話番号が無効であることを示すメッセージがユーザーに表示されません。

4

9 に答える 9

8

モバイル番号の単純な正規表現を試してください

[Required (ErrorMessage="Required")]
[RegularExpression(@"^(\d{10})$", ErrorMessage = "Wrong mobile")]
public string Mobile { get; set; }
于 2016-06-15T08:18:09.850 に答える
6

ページにバリデータがありません。このようなものを追加して、検証メッセージを表示します。

@Html.ValidationMessageFor(model => model.PhoneNumber, "", new { @class = "text-danger" })
于 2015-03-06T18:13:37.203 に答える
4

電話番号を(###) ###-####形式で表示するには、新しい HtmlHelper を作成します。

使用法

@Html.DisplayForPhone(item.Phone)

HtmlHelper 拡張機能

public static class HtmlHelperExtensions
{
    public static HtmlString DisplayForPhone(this HtmlHelper helper, string phone)
    {
        if (phone == null)
        {
            return new HtmlString(string.Empty);
        }
        string formatted = phone;
        if (phone.Length == 10)
        {
            formatted = $"({phone.Substring(0,3)}) {phone.Substring(3,3)}-{phone.Substring(6,4)}";
        }
        else if (phone.Length == 7)
        {
            formatted = $"{phone.Substring(0,3)}-{phone.Substring(3,4)}";
        }
        string s = $"<a href='tel:{phone}'>{formatted}</a>";
        return new HtmlString(s);
    }
}
于 2016-03-22T20:08:30.453 に答える
1

これを試して:

[DataType(DataType.PhoneNumber, ErrorMessage = "Provided phone number not valid")]
于 2016-06-15T08:52:09.317 に答える
1

または、JQuery を使用することもできます。入力フィールドをクラス "phone" に追加し、これをスクリプト セクションに追加します。

$(".phone").keyup(function () {
        $(this).val($(this).val().replace(/^(\d{3})(\d{3})(\d)+$/, "($1)$2-$3"));

エラー メッセージは表示されませんが、10 桁すべてを入力するまで、電話番号の形式が正しくないことがわかります。

于 2016-07-01T20:42:29.643 に答える