收 藏
投 稿
繁 体
RSS
首 页
运 营
学 院
建 站
论 坛
Web
master8.net
网站运营
欢迎在本站发布信息,在线投递稿件
请点这里
。编辑QQ:4908220,欢迎联系交流。
业界动态
创业故事
推广研究
策划盈利
电子商务
企业平台
站长工具
SEO查询
Whois查询
Pr查询
域名查询
IP查询
网页编辑器
技术学院
投递稿件请点这里:)
网页设计
HTML
XHTML
CSS
Javascript
Frontpage
Dreamweaver
图形图像
PhotoShop
FireWorks
Flash
Coreldraw
程序开发
PHP
ASP
.NET
JSP
CGI
XML
数据库
MySQL
Oracle
MSSQL
Access
综合应用
设计理论
建站系统
服务器管理
常用下载
办公应用
建站服务
如有建站意向,请尽快联系我们,以便安排时间...
QQ:4908220
作品展示
服务范围
服务流程
服务报价
联系方式
付款方式
站长论坛
注册
/
登陆
/
忘密?
交流区
站长酒吧
SEO&推广
网赚交流
建站系统
服务&信息
招聘求职
项目外包
广告发布
网络资源
技术区
网页设计师
界面设计师
WEB程序员
计算机应用
文章正文
» 您的当前位置:
首页
>>
学院
>>
程序开发
>>
ASP.Net
用.Net实现基于CSS的AJAX开发(1)
来源:
互联网
| 时间:2007-04-15 | 浏览:
相关评论
|
报告错误
|
发布文章
【字号:
大
|
中
|
小
】 【背景色
】
前面我介绍了我做的.net版的Ajax库(.NET下的简单AJAX处理库 ),现在要介绍的是一种开发模式:样式绑定式驱动开发。
样式驱动是我自己命名的,(我也不知道它叫什么,嘿嘿)以便区别目前的请求驱动式开发(如struts、webwork等)和事件驱动式开发(如asp.net、JSF等)。
正文:
1 简介
首先,让我们来看看传统的WEB开发流程:
?请求驱动: 最常见的一类WEB框架实现了以请求驱动的流程。一个HTTP请求近来,被一个通用的分发器Servlet
(Dispather Servlet)分析,再被分发到一个对应的应用处理器。处理器依次处理UI特有的控制逻辑,调用业务对象和处理会
话状态,准备一个模型,再转发到视图。
?事件驱动: 事件驱动框架的设计目标是将桌面UI编程中著名的事件驱动模式搬到WEB环境中来。其特征是;对于如何将
表单提交到URL、如何将URL映射到控制器这些问题它们不关心;在事件驱动的框架中,表单组件和监听器联系在一起,监听器
通过事件开调用。而且,这类框架通常不打算实现可插拔的试图技术来呈现给特定的模型对象,而是把WEB页看作一写列界面组
件的组合物,每个组件可以保持自己的状态,并且知道如何呈现自己,甚至可能使用不同界面皮肤。
从上面可以看到一个是传统的MVC架构是开发,一个是以页面为中心的快速应用开发(RAD)两者各有各的好处。
样式驱动式开发在请求驱动开发或事件驱动开发的基础上进行简单的封装,在界面层融合了以上两者概念优势,它以最前台
的界面层为基础,通过CSS样式或HTC事件绑定界面元素来执行相应后台业务,从而达到执行相应请求,处理相应的事件的目的
。
样式驱动的优势在于只需把前台元素赋予特定的样式,即可实现特殊的动能以及特定的业务处理,从而减少编码量和编译的
次数,具有“一次编写,到处绑定”的特点。比传统开发复用性更强。尤其是在AJAX大行其道的今天,在请求驱动框架或事件
驱动现有框架的基础上利用样式绑定式开发基于AJAX的应用,你会发现你的AJAX程序的开发效率会提高很多,尤其是当反复应
用同一(或相似)后台逻辑的情况会更明显,同样,样式绑定式开发对于面向服务式开发也具有很大的优势。
2 基于ASP.NET的样式驱动开发
样式驱动的操作不依赖与后台实现,asp.net的runat=server可以魔法搬地将前台元素转化为后台的元素,不过这样的转化
依赖于特定的元素和后台,比如
这样确实是将input元素扩展成后台可以使用的服务器元素
了,但是对于后台来讲他要在页面对应的里进行特定的处理,而且input type=text只能是input type=text也不可能扩展自己
的功能。样式驱动则可以把一切元素、控件或控件中的元素利用JS的强大功能在前台转换为你想要的功能和效果,然后再送入
原请求或自定义请求,从而弥补asp.net的一些不足,“一次编写,到处绑定”的特点也为我们省去了多个页面类写重复代码的
诸多困扰。
也许你会说不是有用户控件吗,很抱歉,用户控件跟前台严重耦合,你将它拿到一个项目中也许派不上一点用场。
那WEB控件库呢?虽然能重用,跟用户控件比不耦合了,但是局限性太强,复杂度高,我觉得叫一个普通程序员写一个带模
板项的DataGird能排序的,可以删除、修改、上移下移]可以查看详细信息的控件出来是一件很费事的事。
又有人说了,真笨,我直接拖一个DATAGRID然后再这个基础上加按纽,模板列,排序,详细连接好不好啊,还用特意做个
控件吗?有很抱歉的告诉你,如果是1000个DATAGIRD,每一个都有这些功能的一种或几种,那么你后台够写的了,即使你抽象
出一层、封装出一个专门的DataGirdBuilder类,也够复杂的,各种重载方法,晕。
那么使用样式绑定式的开发就简单了,给DataGird个排序的样式(比如CssClass=sort),后台几句代码,或者干脆不写(
你的准备比较充足),就可以了,再加个列变为删除按钮(比如其中的一个列里ItemStyle CssClass="delbtn"),就可以了,
别的DataGrid不需要排序,那么样式去掉。而后页面类里干干静静。样式绑定后变化的元素传值到统一的业务对象进行处理,
一切都很规矩。
3 实现
利用我之前做过的AJAX库,再结合javascript脚本构建一个这样的库不成问题。自然,跟做烧饭做菜一样,这里选料非常的
重要,这里我要选用来自Dean Edwards和Tino Zijdel的事件操作脚本库(common.js)和Neil Cro~~~~y制作的样式基本操作库(
css.js)来做好我们这道美味,噢,当然,还有大名鼎鼎的prototype.js库.
好了,,前台的制作工序基本完成。
然后就是利用我前一阵子做的AJAX库了。
假设是删除,QueryString: command=delrow&JS生成的参数……
则后台调用AjaxDelRow.cs
protected override void DoAjax()
...{
// 搜集参数
string parlist = request.Params["pars"];
string[] paritem = parlist.Split('|');
Hashtable hash = new Hashtable(paritem.Length);
for(int i=0;i
...{
string[] paritempart = paritem[i].Split('^');
hash.Add(paritempart[0],paritempart[1]);
}
bool isDeled = false;
string table = request.Params["table"];
// 判断来源
if(table!=null)
...{
if(table.Equals("dgBigclassmanage")) //DATAGRID的ID号
...{
// 调用对应业务外观的DAO来删除
// hash["0"]为datagrid的第0列,假设第0列传过来是ID值
isDeled = (new BusinessFacade()).DeleteById(hash["0"].ToString());
}
if(isDeled)
...{
Output("true");
}
else
...{
Output("false");
}
}
AjaxDelRow制作流程请参考.NET下的简单AJAX处理库
上一篇:
网站建成后:谁是我们网站的访问者
下一篇:
Skype出台海外赔偿方案
我要投稿
打印本文
推荐本文
加入收藏
返回顶部
关闭窗口
01-12
ASP.NET 中如何防范SQL注入式攻击
12-16
关于Asp代码与页面的分离
11-21
ASP.NET中Server对象的方法
11-21
关于ASP.NET编程中的嵌套If语句
11-21
ASP.NET程序安全的基础知识
ASP.NET 中如何防范SQL注入式攻击
ASP.Net 对XML进行增删改查
ASP.Net实现Ajax多文件无刷新上传
.Net配置文件常用配置说明
ASP.NET热点问题解答14个
.NET下正则表达式应用的四个示例
asp.net 2.0中的URL重写以及url...
揭秘ASP.NET 2.0的Eval方法
.NET 和 Java 之碰撞火花:到底...
网站间共享数据的WebService
more..
» 相 关 评 论
验证码:
站长吧首页
-
网站运营
-
站长学院
-
SEO查询
-
站长论坛
-
建站服务
-
联系本站
-
广告/业务
©2005-2006 站长吧 Master8.NET All rights reserved 陕ICP备05010609号
九州未来科技提供服务器支持
| 网站空间 | 虚拟主机