ASP.NET MVC 데이터 형식 속성을 사용하는 전자 메일 주소 유효성 검사 문제가 있습니다. 내 모델에서 : [Required(ErrorMessage = “Field can’t

이메일 확인에 문제가 있습니다.

내 모델에서 :

[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”와 같은 잘못된 이메일 주소를 입력하면 양식에 “이메일이 유효하지 않습니다”라고 표시되지 않습니다.

입력을 이메일 주소로 확인하는 양식을 어떻게 얻습니까? 이것에 대한 도움을 찾고 있습니다.



답변

.NET Framework 4.5를 사용 EmailAddressAttribute하는 경우 솔루션은 내부에있는 것을 사용 하는 것 System.ComponentModel.DataAnnotations입니다.

코드는 다음과 유사해야합니다.

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


답변

Html.EditorFor대신 도우미 메소드를 사용해보십시오 Html.TextBoxFor.


답변

다음과 같은 RegularExpression 속성을 사용해야합니다.

[RegularExpression("^[a-zA-Z0-9_\\.-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$", ErrorMessage = "E-mail is not valid")]

[RegularExpression]은 빈 필드에 영향을 미치지 않으므로 [필수]를 삭제하지 마십시오.


답변

아직 .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; }
    }


답변

MVC 3을 사용합니다. 내 수업 중 하나에서 이메일 주소 속성의 예는 다음과 같습니다.

[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 수준까지의 전자 메일 주소 내의 모든 옵션을 다루는 표현식이 있지만 정규 표현식이 필요하지 않습니다 (매우 길습니다).


답변

[Required(ErrorMessage = "Please enter Social Email id")]
    [DataType(DataType.EmailAddress)]
    [EmailAddress]
    public string Email { get; set; }


답변

MVC5 프로젝트에서 위의 코드를 사용했으며 유효성 검사 오류와 함께 완벽하게 작동합니다.

   [Required]
   [Display(Name = "Email")]
   [EmailAddress]

   [RegularExpression(@"^([A-Za-z0-9][^'!&\\#*$%^?<>()+=:;`~\[\]{}|/,₹€@ ][a-zA-z0-
    9-._][^!&\\#*$%^?<>()+=:;`~\[\]{}|/,₹€@ ]*\@[a-zA-Z0-9][^!&@\\#*$%^?<>
        ()+=':;~`.\[\]{}|/,₹€ ]*\.[a-zA-Z]{2,6})$", ErrorMessage = "Please enter a
   valid Email")]


   public string ReceiverMail { get; set; }