ホームページ  >  記事  >  バックエンド開発  >  ASP.NET の MVC がコントローラーからビューにデータを渡す方法の紹介

ASP.NET の MVC がコントローラーからビューにデータを渡す方法の紹介

巴扎黑
巴扎黑オリジナル
2017-08-16 14:17:301737ブラウズ

この記事では、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);

    }

方法 4: TempData

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

Turn : Index — Order — Detail の場合、Detail メソッドでは TempData オブジェクトを取得できません。これは、TempData は 1 回しか渡せず、システムによって自動的にクリアされるためです。

出力結果

以上がASP.NET の MVC がコントローラーからビューにデータを渡す方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。