IT

ASP.NET MVC 데이터 형식 속성을 사용하는 전자 메일 주소 유효성 검사

lottoking 2020. 6. 8. 08:04
반응형

ASP.NET MVC 데이터 형식 속성을 사용하는 전자 메일 주소 유효성 검사


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

내 모델에서 :

[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; }

스크립트는 일반적으로 html 페이지 끝에로드되며 MVC는 번들 사용을 권장합니다. 따라서 가장 좋은 방법은 jquery.validate파일이 전자 메일 입력의 유효성을 검사하기 때문에 어떤 방식 으로든 변경되었거나 최신 버전으로 업데이트되지 않는 것입니다.

따라서 너겟 패키지를 업데이트 / 새로 고치거나 실제로 자신의 기능을 작성할 수 있습니다.

Here's an example which you would add in an extra file after jquery.validate.unobtrusive:

$.validator.addMethod(
    "email",
    function (value, element) {
        return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
    },
    "This e-mail is not valid"
);

This is just a copy and paste of the current jquery.validate Regex, but this way you could set your custom error message/add extra methods to fields you might want to validate in the near future.

참고URL : https://stackoverflow.com/questions/16712043/email-address-validation-using-asp-net-mvc-data-type-attributes

반응형