用代码呈现,抛弃控件绑定
DESCRIPTION
2011-1-16在广力的技术讲座TRANSCRIPT
![Page 1: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/1.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
玩味代码艺术无鬼论软件之道
用代码呈现,抛弃控件绑定Asp.Net Without Webform系列之
一杨无鬼 [email protected]
![Page 2: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/2.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
Asp.net中的呈现
• 微软数据绑定简史• 代码所演示的示例功能• 用 Repeater显示图书列表• 用 ListView显示图书列表• 用 <% C#statement %>呈现图书列表• 请继续关注后续问题
![Page 3: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/3.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
微软数据绑定简史
• ( MFC) VC、 VB– 截止 VisualStudio 6 之前,繁琐 / 简单、专业/ 玩具
• Winform– .Net 对 win32 gui 的封装,可以和 Delphi 媲
美,在绑定方面,功能和易用性能很好的兼顾。• Asp.Net– 1.0 :完成了简单的数据单项传递– 2.0 :用了不伦不类的语法和大量把程序员当傻瓜
的约定,实现了从页面 到服务器的传递
![Page 4: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/4.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
微软数据绑定简史
– 从 1.0到 4.0,推出了一系列集合数据的绑定控件,感觉ListView和 Repeater唯一还可以用用而外,其他都是垃圾,尤其垃圾的是 DataGrid。
• Silverlight中的绑定– 一个字评价:好!个人认为非常好抽象了同一个进程中数
据和 UI元素之间的关系。– 同一个进程,所以在 Asp.Net中是无法使用的!
• JavaScript– 在 AjaxLibray中提供的自定义控件标签模型中,微软实
现了类似 Silverlight的绑定模型,可惜性能太差,企图在 js中包装出一个对象化的东东,似乎至今还没有成功者。
![Page 5: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/5.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
– 在后来就是, .Net4.0 发布前(不仅在 Beta, 而在预发布中)微软一直鼓吹的纯客户端模板技术。当时看了一文章,我的个人评价就是非常好,可以使用类似下面的代码:
{{ String.format('5_Client.aspx?product={0}', ProductID) }}
• jQuery-tmpl– 微软最后在 .Net4.0 中砍掉了自己的技术,转而为jquery 贡献了三个插件,这是其中之一。
– 个人认为 jquery-tmpl 的好处在于,可以让我们扔掉不少以呈现为主的控件,能以更直观的方式控制客户端。
![Page 6: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/6.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
代码所演示的实例功能
![Page 7: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/7.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
代码讲解• Html– 整体一个 div 控制页面的对中和宽度– 顺序排列的 div 代表一系列要显示的图像– 每个 div 中用 img/h3/p 来组织内容
• Css– 主要基于定宽和 float 来设计外观– 注意整个页宽的计算:在 firebug 中观察!
• C#服务端数据提供– 用一个静态方法提供列表数据
![Page 8: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/8.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
用 Repeater显示图书列表• 服务端加载绑定代码
• 页面标记
![Page 9: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/9.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
用 ListView显示图书列表• 服务端加载绑定代码(同 Repeater实现)• 页面代码
![Page 10: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/10.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
用<% ...%>呈现图书列表
• 无需服务端页面的加载绑定代码• 页面代码:
![Page 11: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/11.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
简单的比较
• 代码实现– 直观:直接控制 html ,随心所欲。– 无需学习控件的属性、事件、方法和约定。
• 控件绑定– 对于 Repeater/ListView 而言还算直观,毕竟
眼睛能直接见到 html 标记。– 需要学习:如果题一个小要求,在每个图片的标
题名称前添上序号,你该怎么办?我相信你能!我也能,不过如果用控件,你得先查一会儿文档,而用代码方式,你随手分分钟就搞定了!
![Page 12: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/12.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
Asp.Net最佳实践• 首先寻求直接的代码实现,而不是使用控件来解决需求。• 不使用 DataSource相关的技术。我有说不完的理由不用 DataSource,我对 DataSource的看法是“简单弱智”。
• 如果使用控件,避免使用回发事件。我的经验是,微软对数据传递、增删改、过滤分页排序等的功能封装,并不能让我们节省多少代码!
• 优先使用 Repeater,如果你搞不定分页等功能,可考虑使用 ListView,其他绑定控件均不使用。
• 换一种思路来考虑,很多模板项其实都没什么用,一般来说, ItemTemplate、 SeperateTemplate、 LayoutTemplate差不多就够了。
![Page 13: 用代码呈现,抛弃控件绑定](https://reader033.vdocuments.pub/reader033/viewer/2022061303/54938745b4795909308b4631/html5/thumbnails/13.jpg)
http://www.cnblogs.com/ruandao http://blog.csdn.net/ruandao
请继续关注后续的问题
• 除了呈现,增删改、排序过滤分页等等?–或许用 <% %> 需要大量代码才能搞定?–或许用 <% %>比用控件更简单、更直观?
• 难道呈现非得在服务端生成 html吗?–或许 js 是更好的手段?–或许 js 可以实现,但编写很麻烦!–或许用 js比上述方法都简单明了?