• ASP.NET MVC ViewData/ViewBag 简单小结


    近期在项目中遇到一个问题,就是用ViewBag.Model存储匿名对象传递给View,但是需要根据条件给匿名对象添加属性,这个可真心不易,Google了一下发现很多方案都是动态编译神马的,感觉好高大上,最后也没采用,因为不知道动态编译的性能消耗大不大。

    最后是自己简单研究了一下,在ViewBag.Model中存储了Dictionary<string, object>,在View通过Model[key]的方式可以正常读取相应的值,在此对ViewData和ViewBag的使用进行一个简单的小结:
    1、ViewData.Model 可以存储普通对象、匿名对象,或Dictionary等;
    2、ViewData 本身是一个Dictionary;
    3、ViewData.Model 存储匿名对象需要动态追加属性时,可以使用Dictionary;
    4、ViewData.Model 和 ViewData["Model"] 是等效的;
    5、ViewBag是ViewData的一个dynamic包装的马甲,即 ViewBag.Name 与 ViewData["Name"] 相同。

    由于ViewData和ViewBag是使用dynamic对象存储的值,所以进一步引申了一下对dynamic的小结:
    1、如果dynamic变量中存储的是普通对象,则可以使用普通的“变量名.对象属性名”方式取属性值;
    2、如果dynamic变量中存储的是Dictionary,则可以使用“变量名[Key]”的方式取Value;
    3、如果dynamic变量中存储的是已知类型的对象,可以像操作相应类型对象的方式进行操作;
    4、如果dynamic变量中存储的是匿名对象,只能通过反射取值了。

    以上观点只代表本人的肤浅认识,欢迎大牛们拍砖。

  • 相关阅读:
    过滤'and','or' ''' '*' '=' ‘select’下的注入
    HBase 官方文档0.90.4
    MapReduce原理及操作
    HDFS原理及操作
    Sqoop介绍、安装与操作
    HBase介绍、安装与应用案例
    Mahout介绍、安装与应用案例
    Hive介绍和安装部署
    MapReduce应用案例
    Flume介绍与安装
  • 原文地址:https://www.cnblogs.com/rangeon/p/3900816.html
Copyright © 2020-2023  润新知