Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : Re : 닷넷코어 쿠키인증 챕터 응용 문의
글번호: 1069
작성자: 레드플러스
작성일: 2022/10/15 오후 6:27:00
조회수: 1485

 

안녕하세요.

 

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 모델을 따로 만들어서 썼습니다만, 혹시 일반적으로 사용되는 다른 방법이 있는지 궁금합니다.

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  sting107
  2022-10-15 오후 6:36:46
답변 감사합니다. Required만 빼서 시도해봤었는데, 회원가입에서 에러가 날 때가 있던데 stringlength 때문일지도 모르겠군요.. UserViewModel에 이메일 부분을 집어넣어놔서 컨트롤러 login 용으로 하나 더 만들어서 썼습니다. 이대로 써도 되겠네요! :)

PS - 책 내용을 그대로 따라하면 VS에서 경고를 줘서 해당파트 유튜브를 보다가 닷넷노트V31 받아서 참고하고 있습니다. 좋은 자료 항상 감사합니다 :)
  Administrator
  2022-10-15 오후 7:50:13
뷰모델 클래스들은 하나 이상 만들어서 사용해도 됩니다.
회원 가입용 UserRegisterViewModel만 만들고 그곳에는 필요한 유효성 검사 관련 특성만 적용하면 되겠네요.
DotNetNote는 학습할 때에는 V6.0 이상 사용해도 됩니다.
제가 코드 정리는 최신 버전에만 적용하고 있기 때문입니다.
감사합니다.

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 안녕하세요 C# 교과서로 공부를 시작하려고 하는데 맥북 에어 M1으로 교과서의 내용을... - 돌맨 2022-10-25 1695
  닷넷코어 쿠키인증 챕터 응용 문의 - 김민태 2022-10-15 1687
현재글 Re : 닷넷코어 쿠키인증 챕터 응용 문의(2) - 레드플러스 2022-10-15 1485
다음글 ASP.NET & Core를 다루는 기술 학습 관련 문의드립니다. - 김민태 2022-09-06 1965
 
손님 사용자 Anonymous (손님)
로그인 Home