이 기사에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!