회원 가입 폼을 만들때 사용자가 입력한 이메일이 형식에 맞는지 유효성 검사가 필요할때 아래와 같이 정규식을 이용하여 Attribute를 지정해주면 됩니다.
using System.ComponentModel.DataAnnotations; public class EmailAttribute : RegularExpressionAttribute { public EmailAttribute() : base(@"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}") { this.ErrorMessage = "Please provide a valid email address"; } }
public class UserModel { [Required] [Email] [Display(Name = "사용자 이메일")] public string UserEMail { get; set; } [Required] [StringLength(100, ErrorMessage = "{0}은(는) {2}자 이상이어야 합니다.", MinimumLength = 4)] [Display(Name = "사용자 닉네임")] public string UserNickName { get; set; } [Required] [StringLength(100, ErrorMessage = "{0}은(는) {2}자 이상이어야 합니다.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "암호")] public string Password { get; set; } [DataType(DataType.Password)] [Display(Name = "암호 확인")] [Compare("Password", ErrorMessage = "암호와 확인 암호가 일치하지 않습니다.")] public string ConfirmPassword { get; set; } }
<!--CSHTML--> @using (Html.BeginForm(null, null, null, FormMethod.Post, new { @class = "form-signin" })) { @Html.AntiForgeryToken() <h2 class="form-register-heading">회원 가입</h2> @Html.ValidationMessageFor(m => m.UserEMail) @Html.TextBoxFor(m => m.UserEMail, new { @class = "input-block-level", placeholder = "Email address" }) @Html.ValidationMessageFor(m => m.UserNickName) @Html.TextBoxFor(m => m.UserNickName, new { @class = "input-block-level", placeholder = "Nick Name" }) @Html.ValidationMessageFor(m => m.Password) @Html.PasswordFor(m => m.Password, new { @class = "input-block-level", placeholder = "Password" }) @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "input-block-level", placeholder = "ConfirmPassword" }) <button class="btn btn-large btn-primary" type="submit">가입</button> }
유효성 검사 예