2011-10-05 3 views
3

전자 메일 주소가 숫자로 시작되면 DataType.Email의 DataType DataAnnotation에서 내부 유효성 검사가 실패한 것으로 보입니다. [email protected] 스타일의 이메일 주소를 가진 사용자가 내 사이트에 등록하려고 시도했을 때 주소가 '유효하지 않은'것으로보고되면이 문제가 발생했습니다. 몇 가지 실험을 한 후, 주요 숫자가 범인 인 것으로 보입니다.MVC3의 [DataType (DataType.Email)]에 대한 유효성 검사가 실패합니다.

이 온라인에 관해서 아무 것도 찾을 수 없었습니다. 누구든지 알려진 문제인지 또는 우연히 새로운 버그를 발견 했습니까? :) 이것은 Microsoft가 정상적으로 처리하고 Google이 잘못 수행하고있는 표준 전자 메일 주소 형식에 관한 것입니까? 해결 방법이 있습니까?

스콧

+0

'DataType'은 템플릿을 생성하거나 사용할 EditorFor 템플릿을 선택할 때 UI 도우미가되었습니다. 재산에 대한 귀하의 실제 속성은 무엇입니까? – Buildstarted

답변

1

RFC 5322 사양에 따라 숫자로 시작하지 않는 이메일 주소를 제한하는 어떠한 제한이있을 것 같지 않습니다.

읽기 Wikipedia은 완전히 유효 함을 의미합니다.

테스트를 위해 숫자로 시작되는 Live.com 이메일 계정을 만들었지 만 아무 문제가 없었습니다.

그래서이 문제가 있다고 생각합니다. 그것을 고치는 가장 좋은 방법은 당신이 전자 메일에 대한 자신의 정규 표현식이되게하는 것입니다.

1

당신은 정규식 유효성이 정규식 MVC3 마이크로 소프트의 소스에서 찍은

[RegularExpression(@"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$", ErrorMessage="Invalid email")] 
public string EmailAddress { get; set; } 

을 만들 수 있습니다. 선물 프로젝트에서 가져온 것입니다. EmailAddressAttribute

관련 문제