麦饭石滤料,缪凤燕,收音机频道
前奏
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只能经过一次传递,之后会被系统自动清除。
输出结果
源码下载:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论