웹 개발 메모장
[ASP.NET MVC] Model 사용하기 본문
Model 사용하기
Model은 데이터를 담는 그릇같은 역할인 것 같습니다.
JSP에서 말하는 자바빈같습니다.
예를들어 사용자 정보를 저장하는 클래스를 만들면 그 클래스가 사용자 정보 Model입니다.
간단한 로그인 페이지를 만들어보겠습니다.
Step 1. 우선 Model 폴더에 클래스를 추가합니다.
1 2 3 4 5 6 7 8 9 | namespace MVCStudy.Models { public class UserInfo { public string ID { get; set; } public string PW { get; set; } public string NAME { get; set; } } } | cs |
[UserInfo.cs]
Step 2. 컨트롤러에서 get방식으로 로그인페이지를 호출하는 코드를 추가합니다.
1 2 3 4 5 | [HttpGet] public ActionResult LoginView() { return View(); } | cs |
[HomeController.cs]
Step 3. 로그인 페이지를 만듭니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @model MVCStudy.Models.UserInfo @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>LoginView</title> </head> <body> <div> <form action="LoginView" method="post"> <p>ID : @Html.TextBoxFor(user => user.ID) </p> <p>PW : @Html.TextBoxFor(user => user.PW) </p> <input type="submit" value="로그인"/> </form> </div> </body> </html> | cs |
[LoginView.cshtml]
이때 첫번째 줄로 인해
1 | @model MVCStudy.Models.UserInfo | cs |
submit을 통해 <form> 안의 데이터를 전송할 때 데이터들이 UserInfo 클래스(모델)의 멤버변수들에 매핑되어 UserInfo 객체가 전송되게 됩니다.
16번째 줄을 보면
16 | @Html.TextBoxFor(user => user.ID) | cs |
@Html.TextBoxFor 는 Model 매핑을 위해 <input>태그 대신 사용되고 람다식을 매개변수로 받으며 결론적으로 <input> 태그로 변환됩니다.
<form>태그는 post방식으로 LoginView를 호출한다는것을 보여주기 위해 쓴 것이고
15 16 19 | <form action="LoginView" method="post"> ... </form> | cs |
일반적으로는 아래와같이 사용합니다.
15 16 17 20 | @using (Html.BeginForm()) { ... } | ..cs |
Html.BeginForm()에 대한 내용은 여기에서 확인해주세요.
Step 4. post방식을 처리할 메소드를 컨트롤러에 추가합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [HttpPost] public ActionResult LoginView(UserInfo user) { if (user.ID.Equals("admin") && user.PW.Equals("1234")) { user.NAME = "관리자"; return View("MainView", user); } else { return View(); } } | cs |
[HomeController.cs]
[위 코드는 아이디가 "admin", 비밀번호가 "1234" 이어야만 MainView 가 호출됩니다. 그렇지 않은 경우 현재 페이지가 다시 호출됩니다.]
Step 5. 결과를 보여줄 뷰(MainView)를 추가합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>MainView</title> </head> <body> <div> 로그인 정보 <p>ID : @Model.ID</p> <p>PW : @Model.PW</p> <p>NAME : @Model.NAME</p> </div> </body> </html> | cs |
[MainView.cshtml]
[LoginView]
[MainView]
'옛날.. > ASP.NET MVC' 카테고리의 다른 글
[ASP.NET MVC] HttpGet 과 HttpPost (0) | 2017.10.11 |
---|---|
[ASP.NET MVC] ActionLink 페이지 이동 (0) | 2017.10.11 |
[ASP.NET MVC] ViewBag 뷰로 데이터 전달 (0) | 2017.10.11 |
[ASP.NET MVC] Razor 뷰 엔진 (0) | 2017.10.10 |
[ASP.NET MVC] 프로젝트 생성 및 실행 (0) | 2017.10.10 |