菜鸟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 = "" });
list.Add(new { Name = "" });

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

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

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

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

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

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

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

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

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

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

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

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

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

repeater绑定泛型list<string>的更多相关文章

  1. WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决

    背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI ...

  2. DataGridView绑定泛型List时,利用BindingList来实现增删查改

    DataGridView绑定泛型List时,利用BindingList来实现增删查改  一.   DataGridView绑定泛型List的种种 1.DataGridView数据绑定对比(DataTa ...

  3. winform datagridview 绑定泛型集合变得不支持排序的解决方案

    原文:winform datagridview 绑定泛型集合变得不支持排序的解决方案 案例: 环境:Winform程序 控件:Datagridview 现象:Datagridview控件绑定到List ...

  4. [转]WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决

    背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI ...

  5. 再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式

    今天review代码,看见某些大爷在将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式时仍然仅仅顾结果不注重过程,"大爷"咱能负点责任吗? 将泛型为St ...

  6. Repeater绑定List泛型对象

    后台: public void BindData()        {            List<WeiBo> DataList = new List<WeiBo>(); ...

  7. Repeater绑定数组并显示其值

    web开发中,尤其是对于数据展示,不得不说Repeater是一个万能的控件,而且使用也很方便. 在ASP.NET中将数组绑定到Repeater中请问如何在Repeater前台页面中显示该数组的值? s ...

  8. Repeater绑定数据库,使用AspNetPager进行分页

    分页是Web中经常遇到的功能,分页主要有真分页和假分页. 所谓真分页是指:每一页显示多少数据,就从数据库读多少数据: 假分页是指:一次性从数据库读取所有数据,然后再进行分页. 这两种分页方式区别在于从 ...

  9. Repeater绑定数据库

    前台: <table width="> <tr> <td class="tr1"> <asp:Label Text=" ...

随机推荐

  1. IOS开发-UI学习-UIWebView,简单浏览器的制作

    制作一个简单的浏览器,包含网址输入框,Search按钮,前进.回退按钮,UIWebView就这几个简单的控件. UITextField:用来输入网址: UIbuttom:实现前进,后退,搜索等功能: ...

  2. 安卓canvas操作的总结

    2014.07.03 使用canvas绘图 需求:公司需要绘制波形图,类似数学上的正弦波,一条是参考值,一条是实际曲线 解决方法:采用canvas绘图.保存为图片,以供导出 这里提供一个学习的demo ...

  3. [Angular Tutorial] 13 -REST and Custom Services

    在这一步中,我们将会改变我们获取数据的方式. ·我们定义一个代表RESTful客户端的自定义服务.使用这个客户端,我们可以用一种更简单的方法向服务端请求数据,而不用处理更底层的$httpAPI,HTT ...

  4. js排序算法汇总

    JS家的排序算法   十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外 ...

  5. select into from 和 insert into select 的用法

    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) valu ...

  6. bzoj2555

    开始时间:19:40 完成时间:21:00 传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2555 题目大意:(1):在当前字符串的后面插入一 ...

  7. PHP加水印代码 支持文字和图片水印

    PHP加图片水印.文字水印类代码,PHP加水印类,支持文字图片水印的透明度设置.水印图片背景透明.自己写的一个类,因为自己开发的一套CMS中要用到,网上的总感觉用着不顺手,希望大家也喜欢这个类,后附有 ...

  8. mybatis:"configuration" must match "(properties?,settings?,typeAliase.....

    在运行mybatis配置文件的时候,出现错误: mybatis:"configuration" must match "(properties?,settings?,ty ...

  9. 记录一次事故——idea,sbt,scala

    没事千万不要点idea的update啊,就算它自己弹出来的也不要管哦. 我们自己的IDE在使用过程中总会有各种settting的配置,更新之后这些都没有了,而且自己本地安装的插件也就都没有了,所以更新 ...

  10. CentOS 6.6下JDK1.7安装与配置(Linux)经典入门详解案例

    最近用的linux较多,在网站找了一些关于linux环境下jdk安装的教程,过程是有的但是好多细节都没有表现出来,所以我花了点时间总结了一下,希望对大家都有帮助... CentOS下JDK1.7安装与 ...