zoukankan      html  css  js  c++  java
  • repeater绑定泛型list<string>

          菜鸟D重出江湖,依然是菜鸟,囧!言归正传——

          工作中遇到一个repeater绑定的问题,数据源是一个list<string> 集合,然后在界面上使用<%#Eval()%>绑定。问题来了,Eval该绑定那个属性名(或者字段)呢?

          先说菜鸟D的想法:将list<string>变成list<匿名> ,然后绑定匿名类型的某一属性。菜鸟为啥会有这样的想法,首先list<string>只用一次,而且只有一个属性(字段),没有必要新声明一个类型,匿名就可以胜任,反正我们更关心的是属性(字段)而不是类型。其次,你不觉得写一个匿名集合有够高大上么?!

         菜鸟D开始了尝试,用脚趾也能想出来结果,失败—— 理由:声明集合不能使用匿名类型(有高人不服可以尝试,欢迎提供新的解决方法,总之菜鸟D没有写出来)

         然后有位朋友提示可以使用动态dynamic(自行脑补),于是乎,菜鸟D搞出来一个动态集合(这个貌似会敲代码都会写吧),动态集合里随意插入,没人在意是什么类型,当然集合里类型是一致的,你总不能插一个int,再插一个string吧。此时匿名就派上用场了。

    List<dynamic> list = new List<dynamic>();
    list.Add(new { Name = "1" });
    list.Add(new { Name = "2" });

          这时候绑定就没有问题了,Eval也可以找到合适的属性(字段)来绑定了。这种方法就是采用匿名类型+动态集合来绑定的,硬生生把string变成一个实体类,想想也没必要。

          然后在网上找个下,还真找到类似的情况,博问里边还给出了解决方案。

          <%# ((string)Container.DataItem)%>

          就是这么简单,你不用考虑什么实体类。菜鸟D只能拜服:高人啊!

          这个问题提供了两种解决方案,哪一种更适合就选哪一种呗。不过菜鸟D感觉动态集合+匿名类型只是在这里不是最佳方案,一定有更适合的地方。不足之处,欢迎指正。

    -------------------------------------------------------------------------------------

          菜鸟D希望这篇文字能够帮到你。

          下面内容属于基础知识科普:

          匿名类型:匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。 每个属性的类型由编译器推断。注意:属性是只读的,也就是说匿名类型适合展示。由于属性只读,赋值什么的就不要想了,编译不通过的。匿名类型更多的使用于linq语句中。

    var v = new { Amount = 108, Message = "Hello" };
    Console.WriteLine(v.Amount + v.Message);

          动态类型dynamic(csdn上为使用类型): 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查。 大多数情况下,该对象就像具有类型 object 一样。 在编译时,将假定类型化为 dynamic 的元素支持任何操作。 

         在声明中,作为属性、字段、索引器、参数、返回值或类型约束的类型。在显式类型转换中,作为转换的目标类型。在以类型充当值(如 is 运算符或 as 运算符右侧)或者作为 typeof 的参数成为构造类型的一部分的任何上下文中。

         dynamic在mvc中使用的更多,也有人说它与js的var很像(当然指用法)。经常与 ExpandoObject 一起使用,常用mvc的人应该简单比较多。

  • 相关阅读:
    程序员的九重境界,你是第几重?
    一个常用的正则表达验证类(转载)
    学习程序设计的态度
    科技期刊学术不端文献检测系统(转载)
    用GridView设计固定行数的入库单报表
    JavaScript技巧集
    线程的概念
    java实验三 类的继承与多态
    常见的网络攻击手段及防御方法
    类和对象的概念(转载)
  • 原文地址:https://www.cnblogs.com/cnDqf/p/4442272.html
Copyright © 2011-2022 走看看