この記事では、ASP.NET MVC がコントローラーからビューにデータを転送する 4 つの方法を主に紹介します。興味のある方は参考にしてください。
前置き
1. 新しいプロジェクトの Models ファイルの下に、新しい Products クラスを作成します:
public class Products { public int Id { get; set; } public string Name { get; set; } public double Price { get; set; } }
2. コントローラーでこのクラスをインスタンス化します
方法 1: ViewData
次のように、コントローラーのメソッドを使用して ViewData を使用し、上記のインスタンス化されたオブジェクトをキーと値のペアの形式で保存します。var p = new Products() { Id = 1, Name = "饮料", Price = 2.5 };次に、ビュー内の ViewData の値を取得し、次のようにオブジェクトを変換します。
ViewData["person"] = p;
方法 2: ViewBag
次のように、コントローラーのメソッドを使用して、上記のオブジェクトを ViewBag 動的式の形式で保存します:@{ var p = (Products)ViewData["person"]; } <h1>@p.Id</h1> <h2>@p.Name</h2> <h3>@p.Price</h3>次のようにビューを変更します:
ViewBag._Product = p;
メソッド 3: Model
は、次のように、コントローラー内のメソッドを View の上記のオブジェクトに返します:@{ var p = (Products)ViewBag._Product; }そして、次のように、ビュー内の必須型オブジェクト Products を取得します。
public ActionResult Index() { var p = new Products() { Id = 1, Name = "饮料", Price = 2.5 }; return View(p); }
TempData の値はセッションに保存されるため、リダイレクトを通じて引き続き使用できます。ただし、TempData は一度だけ渡すことができ、その後はシステムによって自動的にクリアされます。
以下では、Index アクションから Order アクションに切り替え、TempData に格納されている値をビューに出力する例を示します。
まず、コントロール内に新しい Action メソッドを作成し、それに Order メソッドという名前を付けます。コードは次のとおりです。
@using MvcTest.Models; @model Products @{ ViewBag.Title = "Index"; } <h1>@Model.Id</h1> <h2>@Model.Name</h2> <h3>@Model.Price</h3>
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"]; }
出力結果
以上がASP.NET の MVC がコントローラーからビューにデータを渡す方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。