ホームページ >バックエンド開発 >C#.Net チュートリアル >ASP.NET MVC でコントローラーからビューにデータを渡す 4 つの方法
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: TempDataTempData は引き続き使用できます。その値はセッションに保存されるため、リダイレクトされます。ただし、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 オブジェクトを取得できません。これは、TempData は 1 回しか渡せず、システムによって自動的にクリアされるためです。 出力結果 以上がこの記事の全内容ですので、皆様の学習にお役に立てれば幸いです。ぜひPHP中国語サイトをご覧ください。 ASP.NET MVC がコントローラーからビューにデータを転送する 4 つの方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。