[C# 강좌 - 69] MVC Framework에서 Controller에서 View 설정하기


Study/C#  2019. 7. 2. 09:00

안녕하세요. 명월입니다.


이 글은 C#의 MVC Framework에서 Controller에서 View 정의에 대한 설명입니다.


앞에서 C#의 MVC Framework 설치와 사용법에 대해 설명했습니다.

링크 - [C# 강좌 - 67] MVC Framework 프로젝트 생성하기


그 중 Controller에서 Action을 메서드를 호출받을 떄, View 파일(cshtml)파일을 지정하는 방법에 대해서 설명하고자 합니다.

Controller에서 Action 메서드를 만들 때 기본적인 형태는 다음과 같습니다.

public ActionResult ActionResultExample()
{
  return View();
}

이는 위 Controller 클래스 명이 Home이라고 할 때 Home/ActionResultExample 경로를 치면 View/Honme/ActionResultExample.cshtml 파일이 열려서 브라우져에 표시됩니다.

이게 기본형태입니다만, 우리가 Url를 통해서 얻어야 하는 것은 웹페이지 뿐아니라 일반 String 값을 얻어야 할 때도 있고, 혹은 ajax를 통한 json 데이터를 얻어야 할 때도 있습니다. 꼭 웹 페이지만 출력하라는 법은 없습니다.

public String StringExample()
{
  return "Hello world";
}

public JsonResult JsonResultExample()
{
  return Json(new
  {
    Data = "Hello world"
  },JsonRequestBehavior.AllowGet);
}

이 때, 일반 String값을 url로 부터 얻고 싶으면 해당 Action 메서드를 String으로 return 하면 됩니다. 혹은 Json으로 Return하고 싶으면 JsonResult의 값으로 리턴하면 됩니다.

참고로 Json 메서드에서 첫번째 파라미터는 object형식으로 되어 있는데, 여기에 값을 넣으면 NewtonSoft의 JsonConverter 클래스가 실행되서 자동으로 Json값으로 변환됩니다.


링크 - [C#] Newtonsoft.JSON를 이용한 Json 다루기

그리고 또 Action명과 다른 cshtml 파일을 읽고 싶으면 (viewfile 명, masterfile명, model 순)으로 데이터를 넣으면 됩니다.

public ActionResult ActionResultExample()
{
  Node model = new Node();
  return View("Index", "/Views/Shared/master.cshtml", model);
}

참고로 master와 view 파일의 차이는 기본적인 html 형태는 master의 형식으로 갑니다. 그안에 @RenderBody()를 호출하여 @RenderBody부분에 view 파일의 내용을 렌더링합니다.


위에서 viewfile도 다른 폴더의 view파일을 사용하고 싶으면, 상대경로 혹은 절대 경로로 직접 파일 주소를 사용해도 됩니다.


여기까지 C#에서 MVC Framework에서 Controller에서 View 정의에 대한 설명이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.