ASP.NET MVC企业级程序设计 第2章 数据传递

一、控制器向视图传值(一)

1、控制器向视图传递数据,常见三种为:

1) ViewData
2) ViewBag
3) TempData

其中ViewData与ViewBag为同一集合,仅存在语法上的差异。

2、ViewData:

只在一次HTTP请求中有效,当请求结束后会自动清空其值;生命周期短,类似WebForm的Page对象,因此无法跨Action方法传递数据。

3、TempData:

TempData利用Session保存数据;生命周期长,可以跨Action方法传递数据,但读取一次后会自动清除。

4、ViewBag:
ViewBag属性返回的实际类型为ExpandoObject,此类型允许动态添加成员,因此将返回类型定义为dynamic可以避免编译期的语法检查。

二、控制器向视图传值

1、ViewDataDictionary集合的元素类型为object,所以可以把实体对象集合放入ViewData对象或ViewBag对象中传递至View视图页。

2、Action中的View()方法可以接受object数据,所以也可以把实体对象集合传递至View视图页,通过视图的Model属性取回。

三、视图传值到控制器

1、ASP.NET MVC的底层框架是ASP.NET,因此以前学习过的系统对象仍然可以使用。

2、视图传值到控制器

1)视图以GET方式提交的数据,在Action方法中通过Request对象的QueryString集合获取

2)视图以POST方式提交的数据,在Action方法中通过Request对象的Form集合获取

3、当分别以get、post两次请求同名Action时,post对应的Action必须以[HttpPost]修饰。

四、综合案例

1、多种传值方式的应用场景:

1)ViewData:适合传递单个数据,需要类型转换

2)ViewBag:适合传递单个数据,不需要类型转换

3)TempData:主要用于跨多个动作方法传递数据

4)View()方法传参:适合传递模型数据,强类型视图中不需要类型转换

小剧场:生命中不期而遇的温暖。Unexpected warmth in life.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章