2011-04-05 4 views
3

새 MVC 사이트 서식 파일과 함께 제공되는 기본 제공 계정 모델/컨트롤러를 사용하는 사이트를 개발 중입니다. 나는 사람들이 자신의 전자 메일 주소에서 두 개의 특정 도메인 중 하나를 사용하는 경우에만 등록을 허용 할 수 있기를 원합니다.특정 전자 메일 도메인의 등록 만 허용

예를 들어 @ domain1.co.uk 또는 @ domain2.co.uk를 사용하는 경우 등록 할 수 있지만 다른 도메인 (예 : Gmail, Yahoo 등)은 사용할 수 없습니다.

누구든지 올바른 방향으로 나를 가리킬 수 있다면 좋을 것입니다.

답변

6

MVC3 기본 사이트를 사용하는 경우 파일은 /Models/AccountModels.cs입니다. 정규 표현식을 추가하여 클라이언트 측 * 및 서버 측 유효성 검증을 수행 할 수 있습니다.

public class RegisterModel 
{ 
    ... 

    [Required] 
    [DataType(DataType.EmailAddress)] 
    [Display(Name = "Email address")] 
    [RegularExpression(@"^[a-zA-Z0-9._%+-]+(@domain1\.co\.uk|@domain2\.co\.uk)$", ErrorMessage = "Registration limited to domain1 and domain2.")] 
    public string Email { get; set; } 

    ... 
} 

요구 사항에 가장 적합한 표현식을 찾아야합니다.

* 클라이언트 측 유효성 검사는 뷰가 jquery.validate 스크립트를 참조하고 있다고 가정하고 Html.ValidationMessageFor(m => m.Email) 및/또는 Html.ValidationSummary()을 기본적으로 가져야합니다.

+0

저스틴에게 감사 드려요, 저에게 해결책이되었습니다. 그것은 완벽하게 작동합니다. 답변을 게시 한 다른 모든 사람들 덕분에. – 0NLY777

+0

듣기 좋다! 내장 기능을 사용할 수도 있습니다. 맞습니까? – JustinStolle

+0

감사합니다 저스틴. 이것은 나에게 시간을 절약했다. – tnktnk

2

무엇을 더 할 당신이 필요로하는 것보다 :

if(email.Contains("@domain1.co.uk") || email.Contains("@domain2.co.uk")) 
    Register(email); 
else 
    throw, return false, whatever() 
+1

+1은 whatever() 부분입니다. –

0

의 유효성을 검사하는 프론트 엔드합니다 (등록 양식) 및 백엔드 모두에서.

여기서 클라이언트 측 유효성 검사를 위해 jquery validation plugin을 권장합니다.

0

유효성 검사를 수행 할 때가되면 (즉, 이메일 필드가 채워지는 경우) 정규식을 사용하여 도메인에 있는지 확인하십시오. 실제 정규식이 무엇인지에 관해서는 이메일 주소를 확인하는 것에 대한 온라인 토론이 많이 있습니다. 심지어 유효한 이메일 주소에 포함되어야하는 것까지 내려갑니다. 이 예제는 온라인에서 찾았지만 정규 솔루션 전문가는 아니기 때문에 최상의 솔루션이라고 볼 수는 없습니다. 나는 몇 가지 예제를 시도했지만 난 당신이 때이 안 합격을 몇 가지 가지고 올 수 확신 :

mail.com

^\w+([-+.']\w+)*@mail.com$

당신이에 대해 확인하려는 도메인입니다. 여러 개의 도메인이있는 경우 정규 표현식을 확장하거나 여러 개의 검사를 사용하여 정규 표현식에서 mail.com을 사용하려는 다른 구문으로 바꿀 수 있습니다.

BTW이 forums.asp.net 게시물의 정규식이 사용자의 것과 같은 문제를 처리하는 것으로 나타났습니다.

관련 문제