1

私の MVC アプリケーションでは、電子メールの検証はローカルで完全に機能していますが、公開してサーバーにデプロイすると機能しません。ローカル ファイルとデプロイされたファイルの両方の html ソースを比較しましたが、違いはありません。私のRazorビューのマークアップは

 <li>
        <p><strong>Email: </strong>@Model.CurrentEmailAddress <span class="deliverychange" onclick="showHidden('emailchange');">(Change email)</span></p>
        <div id="emailchange" class="fullborder" style="display: none;">
            <div class="orderrow newemailaddress">
                @Html.LabelFor(m => m.UpdatedEmailAddress)
                @Html.TextBoxFor(m => m.UpdatedEmailAddress, new { @onkeypress = "showEmailChangeConfirmation();" })
                @Html.ValidationMessageFor(m => m.UpdatedEmailAddress)
            </div>

            <div id="updatedemailkeypress" style="display: none;">
                <div class="orderrow checkboxrow emailchangeconfirm">
                    @Html.LabelFor(m => m.UpdateEmailAddress)
                    @Html.EnumRadioButtonFor(m => m.UpdateEmailAddress, false)
                </div>
            </div>

            <div class="clear">&nbsp;</div>
        </div>
    </li>

私のモデルは次のとおりです

    [DataType(DataType.EmailAddress)]
    [RegularExpression(@"^([\w.-]+)@([\w-]+)((.(\w){2,3})+)$", ErrorMessage = "Email is not valid")]
    [Display(Name = "Enter new email address: ")]
    public string UpdatedEmailAddress { get; set; }


    [Display(Name = "We will use ****")]
    public YesNo UpdateEmailAddress { get; set; }
4

4 に答える 4

2

代わりに EmailAddress 属性を使用してください

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.emailaddressattribute%28v=vs.110%29.aspx

于 2013-10-31T13:08:04.670 に答える
1

これに多くの時間を費やした後、公開ウィザードが jquery.validate-vsdoc.js をスクリプト フォルダーにコピーしていないことがわかりました。これを手動でサーバーにコピーしたところ、すべてが機能し始めました。

于 2013-11-13T13:03:49.137 に答える
0

nuget からダウンロードできる dataannotationsextensions ライブラリを使用してみてください。

このようにモデルに Email 属性を追加するだけです

using DataAnnotationsExtensions;
        [Required]
        [DataType(DataType.EmailAddress)]
        [Email]
        public string UpdatedEmailAddress { get; set; }
于 2013-10-31T13:16:42.340 に答える