重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍ASP.NET中MVC从控制器传递数据到视图的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
成都创新互联公司成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、app软件定制开发、移动网站建设、微信网站制作、软件开发、绵阳服务器托管等实行标准化操作,让客户可以直观的预知到从成都创新互联公司可以获得的服务效果。
前奏
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"]; }@p.Id
@p.Name
@p.Price
方式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"; }@Model.Id
@Model.Name
@Model.Price
方式四: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只能经过一次传递,之后会被系统自动清除。
输出结果
以上是ASP.NET中MVC从控制器传递数据到视图的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!