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方法之间共享数据。

    

最新文章

  1. java数组
  2. 初识node.js
  3. C#多维数组与嵌套数组
  4. jQuery+HTML5实现上传文件预览
  5. docker mysql
  6. CentOS完美搭建Redis3.0集群并附测试
  7. 转载 教你使用PS来制作unity3D随机地形
  8. A Tour of Go Range
  9. ubuntu下mysql的常用命令
  10. Python基础教程学习(四)类的创建与继承
  11. A simple Test Client built on top of ASP.NET Web API Help Page
  12. SQL基本之增删查改操作
  13. android dataBinding详解
  14. 了解spring
  15. 【Teradata Utility】使用SQL Assistant导出导入数据
  16. C语法简单测试
  17. picker-view 组件 的value失效问题
  18. 缺失dll的问题
  19. openresty lua 文件上传与删除
  20. yii第二步

热门文章

  1. Thinkphp5 使用爬虫框架 QueryList3 的非composer方法教程
  2. vue和php-前后台交互
  3. Vue.js 计算属性
  4. linux下使用lftp的小结
  5. Linux下安装xwindow图形界面
  6. ZwQueryDirectoryFile用法
  7. Appium初始化设置:手写代码连接手机、appium-desktop连接手机
  8. docker--linux network namespace
  9. js 基础 for in 和 for of的区别详解
  10. LeetCode--Longest Consecutive Sequence(最长连续序列) Python