본문 바로가기
C#/ASP.NET

MVC 프로젝트 시작하기

by hoshi03 2024. 10. 5.

프로젝트 생성할때 ASP.NET Core Web App (Model-View-Controller)로 시작

 

멤버쉽컨트롤러 추가후 멤버쉽 컨트롤러 cs 파일 부분에 우클릭 후 뷰 추가,  뷰는 shared 폴더 아래의

_Layout.cshtml로 추가하기

 

• 모델

 

로그인에 필요한 id, pw의 게터, 세터, 최소 글자수, 에러메시지, 뷰에 보여줄 이름을 정의

namespace MVC.Models
{
	public class LoginInfo
	{
		[Display(Name = "id")]
		[Required(ErrorMessage = "id 입력")]
		[MinLength(4, ErrorMessage ="4자리 이상")]

		public string userID { get; set;}

		[Display(Name = "pw")]
		[Required(ErrorMessage = "pw 입력")]
		[MinLength(4, ErrorMessage = "4자리 이상")]

		public string userPW { get; set;}

	}
}

 

 

• 컨트롤러 

get 요청이 들어오면 

~/Membership/Login.cstml로 연결해서 사용자가 id, pw를 입력하고 

 

적절하게 들어왓으면 로그인 성공 페이지로 리턴, 실패시 에러 메시지와 함께 로그인 페이지로 이동

		[HttpGet]
		public IActionResult Login()
		{
			return View();
		}

		[HttpPost]
		[ValidateAntiForgeryToken]
		public IActionResult Login(LoginInfo login)
		{
			string msg = string.Empty;

			if (ModelState.IsValid)
			{
				string userid = "test";
				string userpw = "1111";

				if(login.userID == userid && login.userPW == userpw)
				{
					TempData["Message"] = "로그인 성공";
					return RedirectToAction("Index", "Membership");
				}
				else
				{
					msg = "정확한 id,pw를 입력해주세요";
				}
			}

			else
			{
				msg  = "로그인 실패";
			}

			ModelState.AddModelError(string.Empty, msg);
			return View(login);
		}

 

 

• 뷰

 

index.cshtml

@{
    ViewData["Title"] = "Membership";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>@ViewData["Title"]</h1>

<div class="text-info">@TempData["Message"]</div>

 

login.cshtml

모델로 로그인정보를 넣어주고 사용자가 입력 가능한 폼과 post 시 이벤트, 로그인 실패시 에러를 띄워줄 div 등을 배치한다

<!-- 모델 선언해주고 해당 모델의 정보를 보여주는 페이지 -->
@model LoginInfo
@{
    ViewData["Title"] = "Login";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>@ViewData["Title"]</h1>


<div class="row">
    <div class="col-md-4">
        <form method="post" asp-controller="Membership" asp-action="Login" onsubmit="btnLogin.disabled = true; return true;">
            <div class="text-danger" asp-validation-summary="All"></div>
            <div class="form-group">
                @Html.DisplayNameFor(m => m.userID)
                <input type="text" class="form-control" asp-for="userID" placeholder="ID" autofocus />
                <span class="text-danger" asp-validation-for="userID"></span>
            </div>

            <div class="form-group">
                @Html.DisplayNameFor(m => m.userPW)
                <input type="password" class="form-control" asp-for="userPW" placeholder="PW" />
                <span class="text-danger" asp-validation-for="userPW"></span>

            </div>
            <button type="submit" name="btnLogin" class="btn-lg btn-success btn-block">로그인</button>
        </form>
    </div>
</div>

 

 

'C# > ASP.NET' 카테고리의 다른 글

데이터베이스 연동 code first 방식  (0) 2024.10.06
DI  (1) 2024.10.05