惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
罗磊的独立博客
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
Last Week in AI
Last Week in AI
美团技术团队
Google Online Security Blog
Google Online Security Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
D
Docker
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
月光博客
月光博客
L
LINUX DO - 最新话题
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
W
WeLiveSecurity
H
Heimdal Security Blog
Vercel News
Vercel News
SecWiki News
SecWiki News
Forbes - Security
Forbes - Security
Blog — PlanetScale
Blog — PlanetScale
Google DeepMind News
Google DeepMind News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
TaoSecurity Blog
TaoSecurity Blog
T
Troy Hunt's Blog
A
About on SuperTechFans
C
Check Point Blog
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
AI
AI
WordPress大学
WordPress大学
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Help Net Security
Help Net Security
博客园_首页
The Last Watchdog
The Last Watchdog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Engineering at Meta
Engineering at Meta
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
I
Intezer
K
Kaspersky official blog
M
MIT News - Artificial intelligence
J
Java Code Geeks
G
GRAHAM CLULEY
P
Palo Alto Networks Blog

博客园 - Yok

js动态代理 Hammett joined Microsoft 鼻炎无端端好了 罚抄100遍 Castle Team宣布Castle将与ASP.NET MVC整合 MonoRail FAQ MonoRail资源汇总 招.net and/or javascript程序员(广州) javascript版贪食蛇 实现MonoRail页面缓存 Castle 1.0 rc2发布 招聘.net程序员(广州) javascript reference card 招聘.net程序员(广州) Ready To Rock 做了一回二五仔 - BEA广州User Group活动见闻 MonoRail - 生命周期及controller/action/view详解 MonoRail - 前期准备 MonoRail - 简介
邪恶的webform
Yok · 2007-09-28 · via 博客园 - Yok

你们真的以为webform易学易用?今天帮同事处理以前遗留的webform项目,回想起了我的伤心往事…… 

我毕业的时候coding经验不少,但没做过web开发。我掌握webform确实很快,一个多月就能熟悉所有基本控件了。但是,我也只能用控件,不可以做任何个性化的东西,也不可以做任何UI方面没有控件去支持的事情。为了解决我面对的问题 ,我不得不去了深入解webform控件的生命周期,知道它怎样去分析aspx模板,怎样处理请求,怎样构造控件树。可以说webform控件我用的熟透了。但是我仍然有不少事情想做但做不了,于是我又不得不去了解html和javascript。当时我还是以使用控件为主,所以我也没有怎么系统的去学习html和js,只是即学即用。我是绞尽脑汁,用尽奇技淫巧去做一些ui组件出来,但是因为跟webform混在一起,限制实在太多了:

  • 你不能用js改变控件相对应的dom结构,否则postback后还原viewstate的过程中会出错;
  • 你没办法给webform控件生成的html tag加控件不支持的attributte,你又得回到后台在Page_Load时control.Attributes.Add();
  • 如果你想使用ajax的话,一堆陷阱在等着你。用xmlhttp发出的请求并不符合webform的标准流程,于是后台Page实例的一堆属性是空的,最让新手恐惧的NullReferenceException就出现了;
  • 你也别指望webform能为你的Ajax.Updater返回一个视图的片段。因为你并没有办法完全控制webform控件会生成什么东西给你。举一个实例:在我公司一个历史遗留下来的webform项目里,一个历史遗留下来的webform程序员企图用prototype去更新部分内容,结果死活都是没反应,后来我帮忙处理的时候才发现,他用一个aspx来处理ajax请求并返回要更新的视图片段,这个aspx包含了一些控件,并且控件包含在一个runat="server"的form里面——事实上很多asp.net程序员连什么是form都不知道。而在客户端,要更新的区域也包含在form里面,由于form不能嵌套在form里面,ie会抛出“参数无效”的错误。于是他又尝试把form标签删了,结果还是死路一条,因为需要postback的控件都必须要摆在form控件里。最后,他因为不能用控件而显露出很不满的神情,而我,则露出想抽他两巴掌的神情。

不要跟我说还有Ajax.Net之类的东西,或许这是唯一的办法——遇到不能解决的新需求,ms或其他控件厂商就去开发新的控件或框架,然后程序员们都使劲的跟着去学习使用他们,asp.net 2.0解决了不少1.1的不足,Ajax.net又解决了现有控件的不足,但这是治标不治本的,你算算为了解决这些问题,你总共花了多少时间?只要有webform在,你就没办法用js去自由的操作dom。

webform入门的学习成本是比较低,但是精通webform比精通 js + xhtml + css 难多了。更郁闷的是,就算你精通了webform,你用它还是会有很多事情做不了,最终还是要靠js,html,codebehind代码杂交,迁就着webform的特性,兜一个大圈去实现功能。webform纯粹是忽悠,用来忽悠winform程序员转到asp.net平台的!