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

More Related Content

Similar to 用代码呈现,抛弃控件绑定

教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005洋夫 葉
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中Andrew Wu
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
Anytao 让windows phone应用在云端翱翔
Anytao 让windows phone应用在云端翱翔Anytao 让windows phone应用在云端翱翔
Anytao 让windows phone应用在云端翱翔Tao Wang
 
什么是云计算
什么是云计算什么是云计算
什么是云计算Liyang Tang
 
Ecomm App Dev Chn
Ecomm App Dev ChnEcomm App Dev Chn
Ecomm App Dev Chnnuo xu
 
[NTU CSIE] Intro to Windows lab
[NTU CSIE] Intro to Windows lab[NTU CSIE] Intro to Windows lab
[NTU CSIE] Intro to Windows labMing-Yuan Jian
 
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4twMVC
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC
 
云起龙骧系列课程(4) - Live Services开发实战_黄继佳
云起龙骧系列课程(4) - Live Services开发实战_黄继佳云起龙骧系列课程(4) - Live Services开发实战_黄继佳
云起龙骧系列课程(4) - Live Services开发实战_黄继佳yalle
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Liyao Chen
 
0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式Timothy Chen
 
Ajax设计技术
Ajax设计技术Ajax设计技术
Ajax设计技术yiditushe
 
部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計Leon Chuang
 
Yanggang wps
Yanggang wpsYanggang wps
Yanggang wpsd0nn9n
 
大型应用软件架构的变迁
大型应用软件架构的变迁大型应用软件架构的变迁
大型应用软件架构的变迁isnull
 
分布式应用程序设计利器-ice
分布式应用程序设计利器-ice分布式应用程序设计利器-ice
分布式应用程序设计利器-iceTony Deng
 
Vcon90 Final
Vcon90 FinalVcon90 Final
Vcon90 Finalxobo
 

Similar to 用代码呈现,抛弃控件绑定 (20)

教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005
 
Ria lqj
Ria lqjRia lqj
Ria lqj
 
容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
Anytao 让windows phone应用在云端翱翔
Anytao 让windows phone应用在云端翱翔Anytao 让windows phone应用在云端翱翔
Anytao 让windows phone应用在云端翱翔
 
什么是云计算
什么是云计算什么是云计算
什么是云计算
 
Ecomm App Dev Chn
Ecomm App Dev ChnEcomm App Dev Chn
Ecomm App Dev Chn
 
[NTU CSIE] Intro to Windows lab
[NTU CSIE] Intro to Windows lab[NTU CSIE] Intro to Windows lab
[NTU CSIE] Intro to Windows lab
 
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
 
云起龙骧系列课程(4) - Live Services开发实战_黄继佳
云起龙骧系列课程(4) - Live Services开发实战_黄继佳云起龙骧系列课程(4) - Live Services开发实战_黄继佳
云起龙骧系列课程(4) - Live Services开发实战_黄继佳
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享
 
0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式
 
Ajax设计技术
Ajax设计技术Ajax设计技术
Ajax设计技术
 
C++
C++C++
C++
 
部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計
 
Yanggang wps
Yanggang wpsYanggang wps
Yanggang wps
 
大型应用软件架构的变迁
大型应用软件架构的变迁大型应用软件架构的变迁
大型应用软件架构的变迁
 
分布式应用程序设计利器-ice
分布式应用程序设计利器-ice分布式应用程序设计利器-ice
分布式应用程序设计利器-ice
 
Vcon90 Final
Vcon90 FinalVcon90 Final
Vcon90 Final
 

用代码呈现,抛弃控件绑定