ホームページ > バックエンド開発 > C#.Net チュートリアル > ASP.NET MVC でコントローラーからビューにデータを渡す 4 つの方法

ASP.NET MVC でコントローラーからビューにデータを渡す 4 つの方法

高洛峰
リリース: 2017-01-14 11:46:39
オリジナル
1715 人が閲覧しました

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 は引き続き使用できます。その値はセッションに保存されるため、リダイレクトされます。ただし、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 回しか渡せず、システムによって自動的にクリアされるためです。

出力結果

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

以上がこの記事の全内容ですので、皆様の学習にお役に立てれば幸いです。ぜひPHP中国語サイトをご覧ください。

ASP.NET MVC がコントローラーからビューにデータを転送する 4 つの方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート