菜鸟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. Ubuntu上搭建Git服务器

    下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用VMware虚拟机安装两台Ubantu系统,分别命名为gitServer和gitClient_01. 1.安装OpenSSH并配置SSH无 ...

  2. bitmap资源回收

    这个问题哎,困扰本宫一天! bitmap不完全解决method: http://blog.csdn.net/hahahacff/article/details/8540942 http://blog. ...

  3. Elasticsearch基础教程

    Reference: http://blog.csdn.net/cnweike/article/details/33736429 基础概念 Elasticsearch有几个核心概念.从一开始理解这些概 ...

  4. java 类中的属性为什么一般都是私有的

    作为一种规范,所有可能被外部访问的可修改变量,都应该有一对对应的getXXX()和setXXX()的存取方法.保证所有对属性值的存取操作,均通过唯一的途径进行. 而我们一般使用private来作这种信 ...

  5. zepto animate

    // Zepto.js // (c) 2010-2013 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  6. iOS 错误 之 http请求

     Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is ins ...

  7. 2.8. 创建 NSManagedObject 的子类 (Core Data 应用程序实践指南)

    现在根据模型来创建NSManagedObject的子类.如果模型改变了,那就就重新生成这些文件.所以,不要在生成的文件里自定义方法,因为重新生成之后,这些修改就丢失了.假如确实需要重新生成自定义的方法 ...

  8. C-Sharp网络编程案例解析(Socket类的使用)

    Server端: using System; using System.Collections.Generic; using System.Text; using System.Net; using ...

  9. SecureCRT 使用

    1. 连接linux 服务器 http://www.cnblogs.com/SimonGao/p/4959274.html

  10. 使用XML布局文件和Java代码混合控制UI界面

    完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...