ASP.NET WebForm 만 다루다가, 최신 트렌드인 ASP.NET MVC 를 하다 보니 너무 어렵다. C#이라는 공통적인 백앤드 언어를 사용하기에 쉽게 접근할 수 있을 거라 생각하였지만 ASP.NET WebForm과 너무 많이 다르다. 나만의 오산이였다.
메서드들의 소개 및 차이점을 말하기 전에 MVC에 대해 간단하게 설명해본다.
MVC는 Model / View / Controller를 나눠서 개발이 진행된다. 이때, Controller에서 View로 반환할 때 이번 주제의 메서드들이 등장한다. 반환하는 방법이 많이 사용되는 4가지 방법이 있다. 그중에서도 가장 많이 사용되는 View() / RedirectToAction() 메서드의 차이점을 정리해본다.
Controller => View 반환하는 메서드들의 종류
- View()
- RedirectToAction()
- Redirect()
- RedirectToRoute()
View()
View() 메소드는 일반적으로 HTML을 브라우저에 보여줄 때 사용된다. 즉, 확장자가 cshtml인 페이지로 넘길 때 사용된다.
ASP.NET WebForm 버전에서, Server.Transfer() 메서드와 같은 역할을 하게 된다.
Server.Transfer와 Response.Redirect 는 다른 점이 많으니, 아래 이전 글을 참고하면 된다.
https://cmang9.tistory.com/175
RedirectToAction()
RedirectToAction() 메서드는 HTML을 랜더링 하는 대신, 다른 액션 메서드를 호출할 때 사용된다.
예제를 구현해봤다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public IActionResult Save(RegisterModel model) {
// Save 로직 시작
..
....
..
// Save 로직 끝
return RedirectToAction("index", "code");
}
public IActionResult Index() {
// Index 액션 메서드가 리스트를 조회하는 메서드라고 가정
// List 로직 시작
..
....
..
// List 로직 끝
return View("list", list);
}
|
cs |
저장이라는 버튼을 클릭하면, Save라는 액션 메서드로 들어와 Save 로직 종료 후 index라는 액션 메서드로 이동하게 된다. 그 이후 index 액션 메서드에서 새로운 로직 수행 후에 위에서 말한 View() 메서드를 이용해서 HTML 랜더링을 진행한다.
ASP.NET WebForm 버전에서, Response.Redirect() 메서드와 같은 역할을 하게 된다. 하지만 302 응답 코드이기에, 영구적으로 이동하는 것이 아닌 임시적으로 이동시켰다는 것이 가장 중요하다.
결론
반환하는 방법이 여러 개다 보니, 처음 접하는 나로서는 많이 헷갈렸다. 그렇다고 해서 누가 알려주는 것도 아니기에, 이것저것 해보면서 정리해본다. 키포인트를 정리해보았다.
- View() 메서드는 HTML을 랜더링 하는 View 페이지로 이동할 때 사용한다.
- View() 메서드는 브라우저의 주소 표시 줄에 URL을 변경하지 않고, HTML 랜더링을 한다.
- RedirectToAction() 메서드는 백단 로직 수행을 위한 다른 액션 메서드 이동할 때 사용한다.
- RedirectToAction() 메서드는 브라우저의 주소 표시 줄에 URL을 변경하게 되고, 302 응답 코드로 전달하게 된다.
비슷한 역할을 하는 메서드이지만, 상세하게 들어간다면 너무나도 다르다. 상황에 맞게 메서드를 잘 선택해서 써야겠다.
'개발 > ASP.NET MVC' 카테고리의 다른 글
[ASP.NET MVC] DropDownList DataBind에 대해 알아보자. (7) | 2019.11.11 |
---|