上一篇讨论了如何为子控件添加集合样式,这次我们讨论如何为服务器控件添加客户端功能 .
1.减轻服务器压力,增加用户体验
服务器功能是强大的,客户端脚本一点也不弱,现在的ajax技术和Atlas技术就是最好的证明,我们总是期待UI有一个好的效果,flash动画给我们带来了很酷的效果,我们至少也可以为我们的服务器控件添加客户端脚本,一方面减少了服务器端的回传,一方面又能为控件提供非常酷的效果.我想我们都很喜欢ATLAS里面很多很酷的控件吧,而且无刷新,服务器控件与客户端脚本交互使用,那会服务器控件变的更加完美.
经过上面的废话,下面我们进入正题
2.简单为服务器控件添加客户端脚本
我们已经了解到服务器控件呈现后的代码仍然为HTML,只要你熟悉此服务器控件呈现后标签和此标签的元素,你就可以直接在服务器控件中添加
属性,事件,样式等等
简单的添加方法如下:
(1)直接在控件添加属性,如为Button控件添加简单的客户端事件
<asp:Button ID="Button2" runat="server" Text="Button" onmouseover="this.value='鼠标经过'" onmouseout="this.value='鼠标离开'" />
(2)使用AttributeCollection在后台添加添加简单的客户端事件,很典型的使用如我们在删除数据的时候总要弹出一个窗口提醒用户是否删除.
Button2.Attributes.Add("onmouseover", "this.value='鼠标经过'");
Button2.Attributes.Add("onmouseout", "this.value='鼠标离开'");
3.复杂客户端功能处理
先不论服务器端的功能,当客户端脚本复杂以后,我们会写在一个js文件里,可以复用,简单的脚本逻辑可以<script>标签内.我们需要封装.
Page类为我们提供了几个方法用于实现以下内容,但需要注意的是,asp.net2.0新加了一个类ClientScriptManager,专门用于管理客户端脚本的方法,使用方法为
ClientScriptManager = Page.ClientScript;
(1)注册脚本库(js文件) RegisterClientScriptInclude 方法
(2)发出位于页面顶部和尾部的脚本 RegisterStartupScript 方法 和 RegisterClientScriptBlock 方法
(3)确保脚本块在页面只出现一次 以Is带头Registered结尾的四个方法
(4)将控件事件处理程序与客户端提交事件关联起来 RegisterOnSubmitStatement 方法
(5)注册一个数组用来存储控件自身变量 RegisterArrayDeclaration方法
(6)注册一个隐藏域 RegisterHiddenField 方法
对于以上方法的具体使用MSDN均给出了具体的示例,刚看的时候感觉方法名比较长,接触后就会感觉简单了,对以上方法的使用一定要了解.如果你不想看MSDN的话,那么推荐看下面几篇文章,相信对你会有很大帮助.还有建议大家可以看下呈现后的HTML代码,这样会加深理解.
从 ASP.NET 服务器控件插入客户端脚本
使用客户端脚本