175

メールの検証に問題があります。

私のモデルでは:

[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }

私からしてみれば:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail"}) <br />
@Html.ValidationMessageFor(m => m.ReceiverMail)

フィールドを空のままにすると、「フィールドを空にすることはできません」と正しく表示されるようになりました。しかし、「fwenrjfw」のような無効な電子メール アドレスを入力すると、フォームに「電子メールが無効です」と表示されません。

入力を電子メールアドレスとして検証するフォームを取得するにはどうすればよいですか? これについて助けを求めています。

4

10 に答える 10

353

.NET Framework 4.5 を使用している場合の解決策は、EmailAddressAttribute内にある whichを使用することSystem.ComponentModel.DataAnnotationsです。

コードは次のようになります。

[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
于 2013-09-21T22:59:21.290 に答える
40

Html.EditorForの代わりにヘルパー メソッドを試してくださいHtml.TextBoxFor

于 2013-08-16T21:30:06.023 に答える
14

まだ .net 4.5 を使用していない場合:

/// <summary>
/// TODO: AFTER WE UPGRADE TO .NET 4.5 THIS WILL NO LONGER BE NECESSARY.
/// </summary>
public class EmailAnnotation : RegularExpressionAttribute
{
    static EmailAnnotation()
    {
        DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAnnotation), typeof(RegularExpressionAttributeAdapter));
    }

    /// <summary>
    /// from: http://stackoverflow.com/a/6893571/984463
    /// </summary>
    public EmailAnnotation()
        : base(@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*"
            + "@"
            + @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$") { }

    public override string FormatErrorMessage(string name)
    {
        return "E-mail is not valid";
    }
}

次に、これを行うことができます:

    public class ContactEmailAddressDto
    {
        public int ContactId { get; set; }
        [Required]
        [Display(Name = "New Email Address")]
        [EmailAnnotation] //**<----- Nifty.**
        public string EmailAddressToAdd { get; set; }
    }
于 2015-06-12T22:41:33.530 に答える
10

私は MVC 3 を使用しています。私のクラスの 1 つの電子メール アドレス プロパティの例は次のとおりです。

[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[Email(ErrorMessage = "The email address is not valid")]
public string Email { get; set; }

Required入力がオプションの場合は削除します。RFC 2822 レベル (非常に長い) までの電子メール アドレス内のすべてのオプションをカバーするものがありますが、正規表現は必要ありません。

于 2013-08-16T22:36:41.530 に答える