웹 개발 메모장

[ASP.NET MVC] Model 사용하기 본문

옛날../ASP.NET MVC

[ASP.NET MVC] Model 사용하기

도로롱주 2017. 10. 11. 16:41





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]



Comments