>백엔드 개발 >C#.Net 튜토리얼 >컨트롤러에서 ASP.NET MVC 보기로 데이터를 전달하는 네 가지 방법

컨트롤러에서 ASP.NET MVC 보기로 데이터를 전달하는 네 가지 방법

高洛峰
高洛峰원래의
2017-01-14 11:46:391744검색

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;
}

메소드 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는 Session에 값이 저장되므로 리디렉션을 통해 계속 사용할 수 있습니다. 그러나 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("");
    }

Index — Order — Detail로 바꾼 다음 Detail 메서드에서 TempData 개체는 한 번 전송된 후에만 시스템에 의해 자동으로 지워지기 때문에 가져올 수 없습니다.

출력 결과

ASP.NET MVC从控制器传递数据到视图的四种方式

위 내용은 모두의 학습에 도움이 되기를 바라며, PHP를 방문해 주시길 바랍니다. 중국사이트.

ASP.NET MVC가 컨트롤러에서 뷰로 데이터를 전송하는 네 가지 방법에 대한 자세한 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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