안녕하세요.
UserViewModel.cs 파일의 [Required] 특성이 들어가 있으면
유효성 검사가 적용됩니다.
만약, 회원 가입시에 Email 컬럼을 옵션 값으로 설정하고자 할 때에는
다음 코드 조각과 같은 뷰모델 클래스에서 [Required], [StringLength] 등의 특성을 제외하면 됩니다.
//[User][2]
using System.ComponentModel.DataAnnotations;
namespace DotNetNote.Models
{
public class UserViewModel
{
public int Id { get; set; }
[Display(Name = "아이디")]
[Required(ErrorMessage = "아이디를 입력하시오.")]
[StringLength(25, MinimumLength = 3,
ErrorMessage = "아이디는 3자 이상 25자 이하로 입력하시오.")]
public string UserId { get; set; }
[Display(Name = "비밀번호")]
[Required(ErrorMessage = "비밀번호를 입력하시오.")]
[StringLength(20, MinimumLength = 6,
ErrorMessage = "비밀번호는 6자 이상 20자 이하로 입력하시오.")]
public string Password { get; set; }
}
}
제 강의 소스에서는 UserViewModel 형식을 사용하여 아이디와 암호만 입력 받아 회원 가입을 진행하도록 되어 있습니다.
Register.cshtml 페이지 상단에 @model UserViewModel 부분을 유효성 검사를 사용하지 않는 다른 클래스 파일을 써도 무관합니다.
Register.cshtml
@model UserViewModel
@{
ViewData["Title"] = "회원가입";
}
<h2>@ViewData["Title"].</h2>
<div class="row">
<div class="col-md-8">
<section>
<form asp-controller="User" asp-action="Register" method="post"
class="form-horizontal">
<h4>아래 항목을 입력하시오.</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label class="col-md-3 control-label" asp-for="UserId"></label>
<div class="col-md-9">
<input type="text" class="form-control" asp-for="UserId" placeholder="아이디">
<span asp-validation-for="UserId" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label" asp-for="Password"></label>
<div class="col-md-9">
<input type="password" class="form-control" asp-for="Password" placeholder="암호">
<span asp-validation-for="Password" class="text-danger"></span>
<div>
암호는 단방향으로 암호화되어 관리자도 절대 알 수 없습니다.
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-3 col-md-9">
<input type="submit" value="가입" class="btn btn-primary btn-lg" />
<a asp-controller="User" asp-action="Index"
class="btn btn-default btn-sm">취소</a>
</div>
</div>
</form>
</section>
</div>
<div class="col-md-4">
</div>
</div>
@section Scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}
추가적인 내용은 제 강의 소스를 함께 로컬 PC에 설치해 두고 같이 비교하시면서 보시면 도움이 됩니다.
https://github.com/VisualAcademy/DotNetNote
또한 실행 결과는 데모 소스 사이트인 닷넷노트 사이트에서 테스트를 해 볼 수 있습니다.
https://www.dotnetnote.com
감사합니다.
On 2022-10-15 오후 3:38:00, '김민태' wrote:
ASP & Core 다루는 기술ㅡ 닷넷코어 파트를 우선 공부 중입니다. 3.1 버전으로 진행중인데,
회원가입에서 아이디, 암호 + 이메일을 받으려고 했더니 책의 내용과 같이 UserViewModel
하나만 사용하면 로그인 시도에서도 이메일 입력이 강제되는걸 확인했습니다.
일단 회원정보 내용이 전부 들어간 UserViewModel과 별도로 아이디랑 암호만 입출력하는
Login 모델을 따로 만들어서 썼습니다만, 혹시 일반적으로 사용되는 다른 방법이 있는지 궁금합니다.