文章目录
页面数据传值方式
1.base.ViewBag.key
2.base.ViewData[“key”]
3.base.TempData[“key”]
4.base.HttpContext.Session[“key”]
5.object Model
1.base.ViewBag.key
- 单个页面传值;
- ViewBag.key属于dynamic动态类型,类似于var,取值时,会自动完成类型转换,不需要强制类型转换;
string value = ViewBag.key;
List<string> list = ViewBag.mylist;
2.base.ViewData[“key”]
- 单个页面传值;
- ViewData[“key”]传值需要强制类型转换;
string value = ViewData["key"].ToString();
List<string> list = ViewData["mylist"] as List<string>
3.base.TempData[“key”]
支持向单个页面传值,也支持跨页传值:
base.TempData[“key”],一旦TempData被取过值,就释放掉了;
4.base.HttpContext.Session[“key”]
5.object Model
注意:
1.ViewBag和ViewData:如果指定的key是一样的,后者会覆盖前者;
2.TempData和Session传值,跳转到其他的方法或页面后,仍然可以获取到值,由此可知,TempData其实是通过Session来实现传值的;
3.model传值不要把数据类型定义成String类型,因为有 view() 方法的重载支持,返回指定的视图类型。
代码实例:
Controller:
Index.cshtml
6.跨页传值
1.控制器,要传递的值
2.控制器Action访问的第一个视图,设置跳转到第二个ToIndex视图
3.ToIndex视图接收传递过来的参数
运行结果:
注意:
TempData[“key”] 传值时,一旦被取值,将会释放内存;
HttpContext.Current.Session[“key”] 传值时,可以多次取值,允许跨页面多次取值;