>  기사  >  백엔드 개발  >  ASP.NET의 MVC가 컨트롤러에서 뷰로 데이터를 전달하는 방법 소개

ASP.NET의 MVC가 컨트롤러에서 뷰로 데이터를 전달하는 방법 소개

巴扎黑
巴扎黑원래의
2017-08-16 14:17:301732검색

이 기사에서는 ASP.NET MVC가 컨트롤러에서 뷰로 데이터를 전송하는 네 가지 방법을 주로 소개합니다. 여기에는 관심 있는 친구들이 참조할 수 있는 가치가 있습니다.

Prelude

1 새 프로젝트의 Models 파일에서 새 Products 클래스를 만듭니다.


 public class Products
  {
    public int Id { get; set; }
    public string Name { get; set; }
    public double Price { get; set; }
  }

2 컨트롤러에서 이 클래스를 인스턴스화합니다


var p = new Products()
      {
        Id = 1,
        Name = "饮料",
        Price = 2.5
      };

방법 1: ViewData

컨트롤러의 메서드를 사용하여 ViewData를 사용하여 위의 인스턴스화된 개체를 다음과 같이 키-값 쌍의 형태로 저장합니다.


ViewData["person"] = p;

그런 다음 뷰의 ViewData에서 값을 가져오고 다음과 같이 개체를 변환합니다.


@{
  var p = (Products)ViewData["person"];
}
<h1>@p.Id</h1>
<h2>@p.Name</h2>
<h3>@p.Price</h3>

메서드 2: ViewBag

컨트롤러의 메소드를 사용하여 위의 객체를 ViewBag 동적 표현 형태로 다음과 같이 저장합니다.


ViewBag._Product = p;

뷰를 다음과 같이 수정합니다.


@{
  var p = (Products)ViewBag._Product;
}

Method 3: Model

은 다음과 같이 컨트롤러의 메서드를 위의 View 개체에 반환합니다.


public ActionResult Index()

    {

      var p = new Products()

      {

        Id = 1,

        Name = "饮料",

        Price = 2.5

      };

      return View(p);

    }

그리고 다음과 같이 필수 유형 개체인 Products를 뷰에 가져옵니다.


@using MvcTest.Models;
@model Products
@{
  ViewBag.Title = "Index";
}
<h1>@Model.Id</h1>
<h2>@Model.Name</h2>
<h3>@Model.Price</h3>

방법 4: TempData

TempData는 세션에 값이 저장되므로 리디렉션을 통해 계속 사용할 수 있습니다. 그러나 TempData는 한 번만 전달될 수 있으며 이후에는 시스템에 의해 자동으로 지워집니다.

아래에서는 Index 액션에서 Order 액션으로 전환하고 TempData에 저장된 값을 뷰에 출력하는 방법을 보여드리겠습니다.

먼저 컨트롤에 새 Action 메서드를 만들고 이름을 Order 메서드로 지정합니다. 코드는 다음과 같습니다.


public ActionResult Index()
    {
      var p = new Products()
      {
        Id = 1,
        Name = "饮料",
        Price = 2.5
      };
      TempData["_product"] = p;
      return RedirectToAction("Order");
    }
    public ActionResult Order()
    {
      return View();
    }

뷰를 다음과 같이 수정합니다.


@{
  Products p = (Products)TempData["_product"];
}

컨트롤러의 코드는 다음과 같다고 가정합니다. 다음과 같이 수정됩니다.


public ActionResult Index()
    {
      var p = new Products()
      {
        Id = 1,
        Name = "饮料",
        Price = 2.5
      };
      TempData["_product"] = p;
      return RedirectToAction("Order");
    }
    public ActionResult Order()
    {
      return RedirectToAction("Detail");
    }
    public ActionResult Detail()
    {
      Products _product = (Products)TempData["_product"];
      return View("");
    }

Turn : Index — Order — Detail. 그러면 TempData는 한 번만 전달될 수 있고 시스템에 의해 자동으로 지워지기 때문에 Detail 메서드에서 TempData 개체를 얻을 수 없습니다.

출력 결과

위 내용은 ASP.NET의 MVC가 컨트롤러에서 뷰로 데이터를 전달하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.