005.控制器之间传递数据
原文链接:http://www.dotnetbips.com/articles/8e64d05b-ab2e-45f6-b7f5-b8a90168915e.aspx
1.前言
最近因为公司的事情,自己给自己加工作量,也是希望自己能在工作中成长。看一篇介绍控制器之间如何传递数据,那就看看,希望能大家有帮助。
2.开始
有时,我们会遇到这样的情况,需要从一个控制器传递数据到另一个控制器,以下是三种方法:
a.通过URL查询字符串
b.通过TempData
c.通过URL路由传递
3.方式
先看代码,代表要传递的数据
public class Room { public string Name { get; set; } public int Num { get; set; } public int Count { get; set; } public Room(string name, int num, int count) { this.Name = name; this.Num = num; this.Count = count; } public Room() { } }
在控制串的一个入口方法
public ActionResult Index() { Room room = new Room("三个1", 10086, 4); //URL接值 //string url = string.Format("/Home/PassByUrl?name={0}&num={1}&count={2}", room.Name, room.Num, room.Count); //return Redirect(url); //TempData//.Room = room; //TempData["Room"] = room; //return RedirectToAction("PassByTempData"); //路由 return RedirectToAction("PassByRoute", room); }
Url查询接值
1 public ActionResult PassByUrl() 2 { 3 Room room = new Room(Request["name"], int.Parse(Request["num"]), int.Parse(Request["count"])); 4 return View(room); 5 }
TempData
public ActionResult PassByTempData() { Room room = TempData["Room"] as Room; return View(room); }
路由,需要先配置路由
1 routes.MapRoute( 2 name: "PassValue", 3 url: "{controller}/{action}/{name}/{num}/{count}", 4 defaults: new { controller="Home",action="PassByRoute" 5 });
控制器代码如下:
public ActionResult PassByRoute(Room room) { return View(room); } public ActionResult PassByRoute() { Room room = new Room(); UpdateModel(room); return View(room); }
三个中第一个显示。