ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASP.NET MVC 5 - 모든 종류의 액션 메서드
    C#/ASP.NET 2020. 3. 17. 22:23

    이번 강의에서, 당신은:
    1. 액션메서드가 무엇인지를 배웁니다.
    2. 액션 메서드의 사용법을 배웁니다.
    3. MVC에 얼마나 많은 종류의 액션 메서드가 있는지 배웁니다.
    4. 예제를 프로그래밍 합니다.

    지난 강의에서, 사용자에게 Index() 뷰페이지를 반환하는 ActionResult 메서드를 봤습니다. 이번 장에서, MVC의 액션 메서드의 개념을 짚어보겠습니다.

    MVC 5 에서의 액션 메서드는 무엇인가?

    Controller 에 쓰인 모든 public 메서드는 액션 메서드로 알려져 있습니다. 액션 메서드를 생성할때 다음의 규칙을 따라야 합니다.

     

    a. 액션메서드는 public이어야 합니다.
    b. 오버로드 될 수 없습니다.
    c. 정적 메서드가 될 수 없습니다.
    d. 모든 컨트롤러는 뷰페이지를 반환하는 최소 한개의 디폴트 액션메서드인 Index()를 지닙니다.
    e. ActionResult 는 모든 반환형식 액션메서드의 부모 클래스 입니다.

    액션메서드의 종류

    ActionResult 는 모든 반환형식 액션메서드의 부모 클래스 입니다. MVC에는 다음과 같은 반환형식의 액션메서드가 있습니다.

     

    ViewResult - HTML 과 마크업을 반환.
    EmptyResult - 반환값 없음.
    RedirectResult - 새 URL로의 리디렉션을 반환.
    JsonResult - AJAX 어플리케이션에서 쓰일 수 있는 JavaScript 객체의 형식을 반환.
    JavaScriptResult - JavaScript 스크립트를 반환.
    ContentResult - text 결과를 반환.
    FileContentResult - 다운로드 가능한 파일을 반환 (이진데이터를 이용).
    FilePathResult - 다운로드 가능한 파일을 반환 (경로를 이용).

    FileStreamResult - 다운로드 가능한 파일을 반환 (file stream을 이용).

     

     

    프로그래밍 예제

     

    1. ViewResult

    // GET: Item
       public ViewResult Index()
    {
        ViewBag.ItemList = "Computer Shop Item List Page";
        return View();
     }​

    출력: 인덱스 뷰페이지를 반환합니다.

     

    EmptyResult

     

    //GET: Item
    public EmptyResult Index()
    {
    ViewBag.ItemList = "Computer Shop Item List Page";
    return new EmptyResult();
    }

    출력: 결과값 없는 빈 페이지를 반환합니다.

     

    RedirectResult

     

    Redirect Results는 특정 url의 결과값을 반환하는데 쓰입니다. 다른 액션 메서드로 리다이렉트해야 할 때 Redirect 액션메서드를 쓸 수 있습니다.

     

    public RedirectResult Index()
    {
    return Redirect("Home/Contact");
    }


    이 코드를 실행하면, Contact 페이지로 리다이렉트될 것입니다.

     

    JSONResult

     

    JSON Result는 간단한 텍스트파일 형식과 키값  쌍을 반환합니다. JSON 형식을 통해 데이터를 반환하고 싶을때, JSONResult가 최선의 옵션입니다.

     

    public JsonResult Index()
    {
    Employee emp = new Employee()
    {
    ID = "Emp23",
    Name = "Steven Clark",
    Mobile = "825415426"
    };
    return Json(emp, JsonRequestBehavior.AllowGet);
    }
    public class Employee
    {
    public string ID { get; set; }
    public string Name { get; set; }
    public string Mobile { get; set; }
    }

     

    출력

    JavaScriptResult

     

    클라이언트 브라우저에서 실행될 수 있는 자바 스크립트를 반환합니다. 브라우저의 응답으로 자바스크립트 콘텐츠를 보냅니다. 이 코드는 실행시간동안 클라이언트가 자바 스크립트를 실행하도록 해줍니다.

     

      예제:

     

    Step 1: HomeController에 다음과 같은 JavaScriptResult() 메서드를 추가하시오.

    [HttpGet]
    public JavaScriptResult WarningMessage()
    {
    var msg = "alert('Are you sure want to Continue?');";
    return new JavaScriptResult() { Script = msg };
    }

    Step 2: Index.cshtml 을 열어 강조된 코드를 입력하시오 and add the following highlighted code.

     

    @{
    ViewBag.Title = "Computer Shop Management";
    }
    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <div class="jumbotron">
    <h2 style="color:chocolate">Welcome to Computer Shop Management</h2>
    </div>
     
     
    <script>
    $(document).ready(function () {
    $("button").click(function () {
    $.getScript("/Home/WarningMessage");
    });
    });
    </script>
     
    <button>Show Message</button>

    출력

    Content Result

     

    사용자정의 형식을 반환합니다. 브라우저 스크린에 텍스트 메시지를 출력할 때 유용합니다.

    public ContentResult Index()
    {
    return Content("Hello ASP.NET MVC 5", "text/plain", System.Text.Encoding.UTF8);
    }

    출력

    File Result

    파일 컨텐츠를 반환합니다.
    Step 1: HomeControllers에 다음 코드를 추가하시오.

     

    [HttpGet]
    public FileResult Download()
    {
    byte[] fileBytes = System.IO.File.ReadAllBytes(@"D:\folder\myfile.txt");
    string filename = "myfile.txt";
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, filename);
    }

     

    Step 2: Index.cshtml 페이지에 액션 링크를 추가하시오.

    1. @Html.ActionLink("Download Text File","Download","Home")

    출력

    PartialViewResult

     

    Partial view의 HTML을 반환합니다.

     

    Step 1: partial page를 추가합니다. [Solution Explorer] -[Shared]로 가서 우클릭하고 뷰 추가하기.

    Step 2: 사진과 같이 Partial View 페이지를 추가하시오.

    Step 3: message.cshtml 페이지에 다음 코드를 추가하시오.

    This is 

    PartialViewResult

    Example Output.

    Step 4: HomeController.cs 를 열어 다음 코드를 추가하시오.

     

    [HttpGet]
    public PartialViewResult messagepage()
    {
    return PartialView("message");
    }

     

    Step 5: Index.cshtml 를 열어 다음 코드를 추가하시오.

     

    @{
    Html.RenderAction("messagepage", "Home");
    }

    Output

    요약

    이번 강의에서, 여러 종류의 액션 메서드를 배웠습니다. 다음 강의에서, ASP.NET MV 5 뷰를 배워보겠습니다.

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

    ASP.NET MVC 5 - 컨트롤러와 뷰 페이지 추가하기  (0) 2020.03.17
    ASP.NET MVC 5 - 컨트롤러 기초  (0) 2020.03.17
    ASP.NET MVC 5 - 폴더 구조  (0) 2020.03.16
    ASP.NET - 첫번째 프로젝트 만들기  (1) 2020.03.15
    ASP.NET - 개념  (0) 2020.03.15
Designed by Tistory.