ASP.NET MVC從控制器傳遞資料到視圖的四種方式

來源:互聯網
上載者:User
前奏

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>

方式四:TempData

TempData可以通過轉向繼續使用,因為它的值儲存在Session中。但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只能經過一次傳遞,之後會被系統自動清除。

輸出結果

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多topic.alibabacloud.com。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.