ASP.NET MVC从控制器传递数据到视图的四种方式详解
程序员文章站
2022-04-10 08:26:03
前奏
1. 在新建项目中的models文件下,新建products类:
public class products
{
public int...
前奏
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只能经过一次传递,之后会被系统自动清除。
输出结果
源码下载:http://xiazai.jb51.net/201701/yuanma/mvctest_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
ASP.NET MVC从视图传参到控制器的几种形式
-
ASP.NET MVC从视图传参到控制器的几种形式
-
ASP.NET MVC传递Model到视图的多种方式总结
-
ASP.NET MVC从控制器传递数据到视图的四种方式详解
-
ASP.NET MVC传递Model到视图的多种方式总结(二)__关于ViewBag、ViewData和TempData的实现机制与区别
-
介绍ASP.NET中的MVC如何从控制器传递数据到视图
-
ASP.NET中MVC从后台控制器传递数据到前台视图的方式
-
ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
-
ASP.NET中MVC从后台控制器传递数据到前台视图的方式
-
ASP.NET MVC从控制器传递数据到视图的四种方式