Skip Navigation Links
技术文档
·网站建设
·软件使用
·图形设计
·程序开发
·网络应用
·电脑技巧
 
公司介绍
·公司简介
·索仕SRCOS网络应用平台
·索仕网站管理系统
·影视广告制作
·联系我们
 
 

撰写自用的 ScriptManager 来管理客户端指令码

8/1/2008 5:11:07 PM

摘要
一般在注册客户端指令码都是使用 Page.ClientScript 属性,不过当 ASP.NET AJAX 出来后,有使用 UpdatePanel 时就需要改用 ScriptManager 来取代部分注册客户端指令码的动作。不过这样有时要使用 ClientScript,有时要使用 ScriptManager 来管理客户端指令码,感觉有点麻烦。而且不知那天又会有 ASP.NET AJAX 2 跑出来,是否又会有新的 ScriptManager2,到时是不是又要改写部分注册客户端指令码的程序代码呢?

撰写自用的 ScriptManager
当有使用 ASP.NET AJAX 时,一定要使用 ScriptManager 来注册客户端指令码;可是又不能完全不用 ClientScript,因为有些方法(例如 GetPostBackEventReference 方法) 在 ScriptManager 并不提供。
所以我们要撰写自用的 ScriptManager 来统一管理客户端指令码的所有方法,我们将撰写 TBScriptManager 类别,整合原来 ClientScript 及 ScriptManager 所提供的方法,然后 BasePage 新增一个 BeeScript 属性来操作 TBScriptManager 对象。
撰写自用的 ScriptManager 来管理客户端指令码

首先我们要新增 TBScriptManager 类别,建构函式需传入 Page 对象,其中会包含 ScriptManager 有提供的方法,例如 RegisterStartupScript、RegisterClientScriptBlock ... 等方法,也会包含 ClientScript 有提供的方法,例如 GetPostBackEventReference、GetPostBackClientHyperlink ... 等方法。这里只例举出部分的方法,其它 ScriptManager 及 ClientScript 方法可以使用相同方式实现。

 

 1撰写自用的 ScriptManager 来管理客户端指令码Imports System.Web.UI
 2撰写自用的 ScriptManager 来管理客户端指令码
 3''' <summary>
 4撰写自用的 ScriptManager 来管理客户端指令码''' 客户端指令码管理。
 5撰写自用的 ScriptManager 来管理客户端指令码''' </summary>

 6Public Class TBScriptManager
 7撰写自用的 ScriptManager 来管理客户端指令码    Private FPage As System.Web.UI.Page
 8撰写自用的 ScriptManager 来管理客户端指令码
 9    ''' <summary>
10撰写自用的 ScriptManager 来管理客户端指令码    ''' 建构函式。
11撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
12撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Page">Page 物件。</param>

13    Sub New(ByVal Page As System.Web.UI.Page)
14撰写自用的 ScriptManager 来管理客户端指令码        FPage = Page
15撰写自用的 ScriptManager 来管理客户端指令码    End Sub

16撰写自用的 ScriptManager 来管理客户端指令码
17    ''' <summary>
18撰写自用的 ScriptManager 来管理客户端指令码    ''' 注册启始客户端指令码。
19撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
20撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Key">索引键。</param>
21撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Script">客户端指令码。</param>
22撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="AddScriptTags">表示是否加入指令码标记。</param>

23    Public Sub RegisterStartupScript(ByVal Key As StringByVal Script As StringOptional ByVal AddScriptTags As Boolean = True)
24撰写自用的 ScriptManager 来管理客户端指令码        ScriptManager.RegisterStartupScript(FPage, FPage.GetType(), Key, Script, AddScriptTags)
25撰写自用的 ScriptManager 来管理客户端指令码    End Sub

26撰写自用的 ScriptManager 来管理客户端指令码
27    ''' <summary>
28撰写自用的 ScriptManager 来管理客户端指令码    ''' 注册客户端指令码。
29撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
30撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Key">索引键。</param>
31撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Script">客户端指令码。</param>
32撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="AddScriptTags">表示是否加入指令码标记。</param>

33    Public Sub RegisterClientScriptBlock(ByVal Key As StringByVal Script As StringOptional ByVal AddScriptTags As Boolean = True)
34撰写自用的 ScriptManager 来管理客户端指令码        ScriptManager.RegisterClientScriptBlock(FPage, FPage.GetType, Key, Script, AddScriptTags)
35撰写自用的 ScriptManager 来管理客户端指令码    End Sub

36撰写自用的 ScriptManager 来管理客户端指令码
37    ''' <summary>
38撰写自用的 ScriptManager 来管理客户端指令码    ''' 注册页面 OnSubmit 的客户端指令码。
39撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
40撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Key">索引键。</param>
41撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Script">客户端指令码。</param>

42    Public Sub RegisterOnSubmitStatement(ByVal Key As StringByVal Script As String)
43撰写自用的 ScriptManager 来管理客户端指令码        ScriptManager.RegisterOnSubmitStatement(FPage, FPage.GetType, Key, Script)
44撰写自用的 ScriptManager 来管理客户端指令码    End Sub

45撰写自用的 ScriptManager 来管理客户端指令码
46    ''' <summary>
47撰写自用的 ScriptManager 来管理客户端指令码    ''' 注册客户端指令码 Include。
48撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
49撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Key">索引键。</param>
50撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Url">客户端指令码 Include URL。</param>

51    Public Sub RegisterClientScriptInclude(ByVal Key As StringByVal Url As String)
52撰写自用的 ScriptManager 来管理客户端指令码        ScriptManager.RegisterClientScriptInclude(FPage, FPage.GetType, Key, Url)
53撰写自用的 ScriptManager 来管理客户端指令码    End Sub

54撰写自用的 ScriptManager 来管理客户端指令码
55    ''' <summary>
56撰写自用的 ScriptManager 来管理客户端指令码    ''' 取得引发 PostBack 的客户端指令码(其开头附加了 javascript:)。 
57撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
58撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Control">控件。</param>
59撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Argument">参数。</param>
60撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="RegisterForEventValidation">事件是否进行验证。</param>

61    Public Function GetPostBackClientHyperlink(ByVal Control As Control, ByVal Argument As String, _
62撰写自用的 ScriptManager 来管理客户端指令码        Optional ByVal RegisterForEventValidation As Boolean = FalseAs String
63撰写自用的 ScriptManager 来管理客户端指令码        Return FPage.ClientScript.GetPostBackClientHyperlink(Control, Argument, RegisterForEventValidation)
64撰写自用的 ScriptManager 来管理客户端指令码    End Function

65撰写自用的 ScriptManager 来管理客户端指令码
66    ''' <summary>
67撰写自用的 ScriptManager 来管理客户端指令码    ''' 取得引发 PostBack 的客户端指令码。
68撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
69撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Options">定义回传的 PostBackOptions。</param>
70撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="RegisterForEventValidation">事件是否进行验证。</param>

71    Public Function GetPostBackEventReference(ByVal Options As PostBackOptions, _
72撰写自用的 ScriptManager 来管理客户端指令码        Optional ByVal RegisterForEventValidation As Boolean = FalseAs String
73撰写自用的 ScriptManager 来管理客户端指令码        Return FPage.ClientScript.GetPostBackEventReference(Options, RegisterForEventValidation)
74撰写自用的 ScriptManager 来管理客户端指令码    End Function

75撰写自用的 ScriptManager 来管理客户端指令码
76    ''' <summary>
77撰写自用的 ScriptManager 来管理客户端指令码    ''' 取得引发 PostBack 的客户端指令码。
78撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>
79撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Control">控件。</param>
80撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="Argument">参数。</param>
81撰写自用的 ScriptManager 来管理客户端指令码    ''' <param name="RegisterForEventValidation">事件是否进行验证。</param>

82    Public Function GetPostBackEventReference(ByVal Control As Control, ByVal Argument As String, _
83撰写自用的 ScriptManager 来管理客户端指令码        ByVal RegisterForEventValidation As BooleanAs String
84撰写自用的 ScriptManager 来管理客户端指令码        Return FPage.ClientScript.GetPostBackEventReference(Control, Argument, RegisterForEventValidation)
85撰写自用的 ScriptManager 来管理客户端指令码    End Function

86撰写自用的 ScriptManager 来管理客户端指令码
87撰写自用的 ScriptManager 来管理客户端指令码End Class


在 BasePage 中新增一个 BeeScript 属性,来操作 TBScriptManager 对象。

 

 1''' <summary>
 2撰写自用的 ScriptManager 来管理客户端指令码''' 页面基础类别。
 3撰写自用的 ScriptManager 来管理客户端指令码''' </summary>

 4Public Class TBBasePage
 5撰写自用的 ScriptManager 来管理客户端指令码    Inherits System.Web.UI.Page
 6撰写自用的 ScriptManager 来管理客户端指令码
 7撰写自用的 ScriptManager 来管理客户端指令码    Private FBeeScrit As TBScriptManager = Nothing
 8撰写自用的 ScriptManager 来管理客户端指令码
 9    ''' <summary>
10撰写自用的 ScriptManager 来管理客户端指令码    ''' 客户端指令码管理。
11撰写自用的 ScriptManager 来管理客户端指令码    ''' </summary>

12    Public ReadOnly Property BeeScript() As TBScriptManager
13撰写自用的 ScriptManager 来管理客户端指令码        Get
14撰写自用的 ScriptManager 来管理客户端指令码            If FBeeScrit Is Nothing Then
15撰写自用的 ScriptManager 来管理客户端指令码                FBeeScrit = New TBScriptManager(Me)
16撰写自用的 ScriptManager 来管理客户端指令码            End If
17撰写自用的 ScriptManager 来管理客户端指令码            Return FBeeScrit
18撰写自用的 ScriptManager 来管理客户端指令码        End Get
19撰写自用的 ScriptManager 来管理客户端指令码    End Property

20撰写自用的 ScriptManager 来管理客户端指令码
21撰写自用的 ScriptManager 来管理客户端指令码End Class


若你想让开发人员一样可以保有使用 ClientScript 的习惯,但其背后已经是使用 TBScriptManager 对象,那就狠一点直接使用 Shadows 遮蔽掉 ClientScript 属性,让他们完全用不到旧的 ClientScript 属性。

 

1    Public Shadows ReadOnly Property ClientScript() As TBScriptManager
2撰写自用的 ScriptManager 来管理客户端指令码        Get
3撰写自用的 ScriptManager 来管理客户端指令码            If FBeeScrit Is Nothing Then
4撰写自用的 ScriptManager 来管理客户端指令码                FBeeScrit = New TBScriptManager(Me)
5撰写自用的 ScriptManager 来管理客户端指令码            End If
6撰写自用的 ScriptManager 来管理客户端指令码            Return FBeeScrit
7撰写自用的 ScriptManager 来管理客户端指令码        End Get
8撰写自用的 ScriptManager 来管理客户端指令码    End Property
作者:jeff377 来源:博客园
 
 
 
昆明索仕科技开发有限公司 版权所有 Copyright© 2002-2010 Kunming Source Technology Exploitive Co.,LTD. All Rights Reserved.
电话:0871-5627877 业务QQ:163871 联系我们
本站基于:索仕网站信息管理系统建设 版本 2.0.4325