ASP.NET MVC 随手记
ViewBag:
本质上市一个字典,提供了一种View可以访问的动态数据存储。这里用到了.NET 4.0的动态语言特性。可以给ViewBag添加任意属性,并且这个属性是动态创建的,不需要修改类的定义就可以从View中访问。
View模板显示页面的规则是先找对应的Controller文件夹,再找到对应的Shared文件夹中所有继承自viewpage的页面。
控制器的约定:
⑴、Controller放到controllers文件夹中,并且命名方式以Controller结尾。
⑵、每个Controller都对应View中的一个文件夹,文件夹的名称跟Controller名相同。Controller中的方法名都对应一个View视图(非必须,但是建议这么做)而且View的名字跟Action的名字相同。
⑶、控制器必须是非静态类,并且要实现IController接口。
⑷、Controller类型可以放到其他项目中。
视图的相关约定:
⑴、所有的视图必须放到Views目录下。
⑵、不同控制器的视图用文件夹进行分割,每个控制器都对应一个视图目录。
⑶、一般视图名字跟控制器的Action相对应(非必须)。
⑷、多个控制器公共的视图放到Shared目录中。
View和Action之间数据传递的方式:
- 弱类型ViewData[“”]
- 动态型ViewBag//dynamic
- 动态类型Model
- 临时存储TempData[""]
- 后台:return View(data)://存入ViewData.Model
- 前台:Model // 其实就是WebViewPage.Model
TempData、ViewData和ViewBag的区别:
ViewData是字典型的(Dictionary),ViewBag不再是字典的键值对结构,而是dynamic(动态)型,会在程序运行的时候动态解析。
ViewData为Object型,而ViewBag为dynamic(动态)型。dynamic和object型的区别是在使用时它会自动根据数据类型转换,而object型则需要我们自己去强制转换。
理论上ViewBag要比ViewData慢一点点,但是几乎可以忽略,所以使用何种方式完全取决于个人的爱好。
TempData的使用同ViewData和ViewBag一样,TempData也可以用来向视图传递数据,只是ViewData和ViewBag的生命周期和View相同,它们只对当前View有用。
TempData则可以在不同的Action中进行传值,类似Webform里的Session。有一点需要注意,TempData的值在取了一次后会自动删除。
TempData用来在一次请求中同时执行的多个Action方法之间共享数据。
最新文章
- java数组
- 初识node.js
- C#多维数组与嵌套数组
- jQuery+HTML5实现上传文件预览
- docker mysql
- CentOS完美搭建Redis3.0集群并附测试
- 转载 教你使用PS来制作unity3D随机地形
- A Tour of Go Range
- ubuntu下mysql的常用命令
- Python基础教程学习(四)类的创建与继承
- A simple Test Client built on top of ASP.NET Web API Help Page
- SQL基本之增删查改操作
- android dataBinding详解
- 了解spring
- 【Teradata Utility】使用SQL Assistant导出导入数据
- C语法简单测试
- picker-view 组件 的value失效问题
- 缺失dll的问题
- openresty lua 文件上传与删除
- yii第二步