关于WebForms以及一些ASP.NET开发上的经验(2)

没想到我的文章引起了那么大的反应,看来最近MVC框架的确是一个热门话题。正如上一篇文章开始所 说的,我不会对MVC框架有任何“贬低”,任何技术滥用都有问题,所以任何东西都会有所谓的Best Practice(去MSDN的Patterns & Practice栏目看看就知道了)。我写这几篇文章,是想说明,很多 WebForms的缺点是被夸大了。WebForms的确有缺点,但是我们完全可以避开,并且仅仅利用到WebForms给 我们带来的便利。这其实也是一种Best Practice。相信以后MVC框架也一定会出现这样的东西。

在上一篇的评论中,有朋友说我是“边缘”的ASP.NET程序员,大概是因为我用WebForms但是抛弃 ViewState、PostBack和GridView这种“重要”的东西吧。我不知道这样是不是“边缘”,但是我的确抛 弃了不少东西。例如还有ADO.NET中的DataSet/DataTable——但是我们还有DataReader呢!抛弃了微软提 供的一部分东西,我们其实可以发现,.NET里的基础组件一个都不少,用起来也会得心应手。

去其糟粕,取其精华。

三、生成丑陋的HTML,难以进行样式控制

在ASP.NET的WebForms刚出现时,各种“演示”看上去真的很美。这个特点微软至今还保留着,各微软 技术大会上的演示真的让人感到心潮澎湃。在我看来,那些“激素大会”更是一种推广策略,而并没有将 目光集中在技术细节的本身。所以微软的东西似乎总是有入门容易提高难的“毛病”。开发人员被“宠坏 ”了,上一篇文章中有位朋友说这就是“穷人的孩子早当家”,还是有一定道理的。在.NET环境下我们就 像是官宦子弟,不过这并不能成为我们习惯于“吃喝嫖赌”的理由。我们要合理利用富裕的环境带给我们 的资源,但是要适当地抛弃一些不好的东西。

好像说了几句废话,现在进入正题。说到WebForms则不得不提丰富的控件,基于ASP.NET平台的第三方 控件提供商似乎比其他平台下的总合还要多,这也是产业阿。在微软提供的控件里,GridView(或者1.1 里的DataGrid)是被“演示”次数最多的,也似乎是最强大(还是差不多等同于“复杂”)的。有了 GridView之后,很多开发人员就习惯于朝页面上拖个控件,然后再设计器里点点鼠标,设设样式,最后绑 定一个DataTable上去。哗,好一个表格就此诞生。然后我们还可以响应其事件,对某一行数据进行编辑 ,删除。太轻松了,这世界一下子变得美好了起来。不过由于GridView过于“强大”,它几乎成为了 ASP.NET初学人员的必修课,当对于Web开发都不明就里的初学者都习惯于GridView、GridView、GridView 时,它的滥用也就不可避免了。于是乎,做表格,用GirdView,做列表,也用GirdView(不就是个只有一 列的表格嘛)。

可惜的是,GridView有很多毛病。如果要使用GridView的高级功能(添加、修改、删除等等), ViewState必不可少,再加上很多开发人员在绑定数据时没有经过筛选,导致ViewState变得无比庞大(例 如显示一个文章列表,明明只需要ID、标题,创建时间等基本信息,却用一个“令人无比愉悦”的SELECT * FROM Article语句把文章内容也选择了出来并绑定在GridView上,ViewState中也就不得不包含几千几 万字的多余数据)。

不过现在想说的,倒是它生成出的HTML。

GridView在客户端生成的HTML是个<table />,可惜这个<table />里东西太多了,的确 显得很丑陋。不过更关键的在于,这个表格的样式实在难以控制。虽说GridView里从标题到单元格到低部 都能够进行样式的定义,但是灵活度还是远远不够。再加上GridView生成的HTML死板而不符合Web标准( 例如不会生成<th />标签,用ControlAdaptor进行改造的做法不算),但是优秀的样式开发人员大 都是坚定的Web标准支持或推广者,ASP.NET对于标准支持不佳,难以控制样式的说法满天飞扬。

我想为WebForms喊冤。不过首先我会打倒以GridView为首的复杂控件(包扩DataList、FormView等等 )并狠狠踩上几脚。有人说,当抛弃了GridView之后,用WebForms还有什么意义?其实类似的话也不断在 我说要抛弃ViewState和(复杂)的PostBack时出现。如果您觉得抛弃了这些东西WebForms就失去意义的 话,那么我想说,ViewState、PostBack、GridView远不是WebForms的全部。我认为,Control模型(或者 说组件化模型)才是WebForms的关键。而这个模型的“基础”是绝对优秀的。下面我会进行一些展示,虽 然这些展示我觉得是基础中的基础。

时间: 2024-10-27 16:54:20

关于WebForms以及一些ASP.NET开发上的经验(2)的相关文章

关于WebForms及一些ASP.NET开发上的经验(1)

记得数年前,当ASP.NET刚出现时,天下间Web开发框架中似乎出现了一个"巨人",WebForms这种似 乎人人都能掌握的开发框架几乎瞬间流行起来.如果谁还在用传统ASP这种控制与表现混合的开发方式, 似乎立即变得低俗了许多.于是乎许许多多人都学会了拖控件+绑定的方式,"Web开发人员"也越来越多 ,一片红火,好不热闹. 风水轮流转,不知从什么时候开始Rails框架随着RoR忽的流行了开来,.NET社区也出现了Monorail, 批判WebForms声音也慢慢多了

关于WebForms以及一些ASP.NET开发上的经验(3)

四.生成复杂的ID难以使用JavaScript操作 我在上一篇文章的最后提到了,虽然使用WebForms我们能够对于页面上的HTML属性和样式等进行自由 的定制和控制,但是有一点是毋庸置疑的,我们没有办法(正常的办法吧,Hack不算)让服务器端控件在 客户端生成一个简单的ID.例如,一个TextBox控件,在服务器端的ID是txtUserName,但是最终在客户端 生成的ID可能是LoginForm_txtUserName,因为它被放在一个ID为LoginForm的NamingContainer

ASP.NET开发中怎么实现多图片上传并浏览的功能

问题描述 ASP.NET开发中怎么实现多图片上传并浏览的功能 ASP.NET开发中怎么实现多图片上传并浏览的功能,可以用什么控件来做? 解决方案 用jquery或者flash,自带的控件好像是不可以 解决方案二: 可以试试Aurigma Upload Suite,功能挺强大的一款图文上传控件,有多个版本,可以根据自己的需求进行选择.

按钮-用asp.net 开发的b/s 程序 客户安装在自己的电脑上 数据库也给用户 现在就是.

问题描述 用asp.net 开发的b/s 程序 客户安装在自己的电脑上 数据库也给用户 现在就是. 用asp.net 开发的b/s 程序 客户安装在自己的电脑上 数据库也给用户 现在就是公司对这个项目进行改造了 需要用户点升级按钮进行升级 我们具体改怎么做呢 麻烦给下 思路或者案例都行 解决方案 既然是BS端.还是装在客户自己电脑 上,这样一来,其实跟CS端一样了,你这是用BS当做CS用了. 基于在BS在客户电脑上端,可以修改他本地的文件 ,就直接到你公司 的官网或者指定地方下载 最新的 文件

【在线等】公司ASP.NET 开发的网站要搬到LINUX服务器上

问题描述 怎么在linux上搭建支持ASP.NET开发的网站?我安装好了MONO,接下来怎么办? 解决方案 解决方案二:传智博客上面好像是视频,去下撒?解决方案三:为什么啊,买不起WIN系统?解决方案四:公司有了一个linux服务器了在租一个win服务器浪费呀解决方案五: 解决方案六:或者装个windows的虚拟机解决方案七:Jexus网站资料:Mono官方说明:

ASP:利用ASP把图片上传到数据库

ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时在文字的旁边有该商品

在Dreamweaver中构建ASP.net开发环境

asp.net|dreamweaver 在开发网站,特别是开发网络数据库之前,首先应该认真构建好 Dreamweaver MX 2004+ASP.NET 开发环境.本例将向读者介绍如何在 Windows XP 操作系统下构建开发环境. 操作步骤 ( 1 )单击[开始]→[控制面板]. ( 2 )在弹出的[控制面板]窗口中双击[添加或删除程序]按钮图标,在弹出的[添加或删除程序]对话框中选择安装 IIS 服务器. ( 3 )安装好 IIS 服务器后,在[控制面板]窗口中单击管理工具,然后在弹出的[

实例分析:利用ASP把图片上传到数据库

上传|数据|数据库 ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时

如何利用ASP把图片上传到数据库

上传|数据|数据库 ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时