这篇文章将概述如何在DotNetNuke框架下应用Asp.net Ajax创建模块.
随着即将在3月15号发布的DNN4.5 大家期待已久的对Asp.net Ajax的支持将在此版中发布。
因为Asp.net Ajax 是独立于DNN安装的,所以DNN框架并不能保证你所应用的服务器是否安装Asp.net Ajax, 因此新版的DNN中增加了一个新的类DotNetNuke.Framework.AJAX, 这个类中所提供的方法可以帮助开发者判定是否可以把AJAX应用于你的方案中。
模块配置 Dependencies
开发DotNetNuke ASP.NET AJAX 模块其中的一种方法是指明System.Web.UI.ScriptManager 的从属关系在模块设置中(module configuration setting)
模块可以随意指定多个从属程序集根据需要,用分号分隔开。例如填入System.Web.UI.ScriptManager 即可应用相应功能, 但前提要求你的服务器支持Ajax.。 之后在安装模块的时候如果运行环境不符合将会有警告提示并且中断安装。
IsInstalled 和 IsEnabled
如果你希望自动判断何时使用ASP.NET AJAX 就可以使用IsInstalled和IsEnabled来设置
IsInstalled可以判断你所应用的系统是否安装了Asp.net Ajax
IsEnabled 设置是由开发者设定是否在所开发的模块/皮肤中应用AJAX
IsInstalled
IsInstalled 使用很简单可以在调用Asp.net Ajax 功能之前用来判断。它将会返回true / false
DotNetNuke.Framework.AJAX.IsInstalled()
IsEnabled
IsEnabled 设置是由开发者设定是否在所开发的模块/皮肤中应用AJAX
DotNetNuke.Framework.AJAX.IsEnabled=True
ASP.NET AJAX 应用样例
AJAX 样例可以在此下载 (需要DNN4.5以上版本才可运行)
样例示范如何应用ASP.net Ajax在run-time
1
ImportsDotNetNuke2
ImportsSystem.Collections.Generic3
4
Namespace DotNetNukeNamespaceDotNetNuke.Modules5
PartialClass AjaxClassAjax6
InheritsEntities.Modules.PortalModuleBase7
DimCurrentPageIndexAsInteger8
DimboolUsingAjaxAsBoolean=False9
10
ProtectedSub Page_Load()SubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load11
12
IfDotNetNuke.Framework.AJAX.IsInstalled()Then13
IfdllAjax.SelectedValue="Using Ajax"Then14
boolUsingAjax=True15
Else16
boolUsingAjax=False17
EndIf18
Else19
boolUsingAjax=False20
EndIf21
22
IfboolUsingAjax=TrueThen23
DotNetNuke.Framework.AJAX.IsEnabled=True24
Else25
DotNetNuke.Framework.AJAX.UpdatePanelControl.Visible=False26
EndIf27
28
IfNotPage.IsPostBackThen29
ShowData(1)30
EndIf31
32
End Sub33
34
PrivateSub ShowData()SubShowData(ByValintCurrentPageIndexAsInteger)35
36
DimmySqlStringAsNewStringBuilder()37
38
mySqlString.Append("SELECT FriendlyName, Description")39
mySqlString.Append("FROM {databaseOwner}{objectQualifier}DesktopModules")40
mySqlString.Append("ORDER BY FriendlyName")41
42
DimcolDesktopModulesAsNewList(Of myDesktopModules)43
44
Using drAsIDataReader=_45
CType(DataProvider.Instance().ExecuteSQL(mySqlString.ToString(),Nothing), IDataReader)46
Whiledr.Read47
DimobjDesktopModulesAsNewmyDesktopModules()48
objDesktopModules.FriendlyName=Convert.ToString(dr("FriendlyName"))49
objDesktopModules.Description=Convert.ToString(dr("Description"))50
colDesktopModules.Add(objDesktopModules)51
EndWhile52
EndUsing53
54
DimpagedDataAsNewPagedDataSource()55
pagedData.DataSource=colDesktopModules56
pagedData.AllowPaging=True57
pagedData.PageSize=1058
pagedData.CurrentPageIndex=intCurrentPageIndex-159
60
Me.lblTotalPages.Text=Convert.ToString(pagedData.PageCount)61
Me.lblCurrentPage.Text=Convert.ToString(pagedData.CurrentPageIndex+1)62
63
IfpagedData.IsFirstPageThen64
btnPrevious.Visible=False65
Else66
btnPrevious.Visible=True67
EndIf68
IfpagedData.IsLastPageThen69
btnNext.Visible=False70
Else71
btnNext.Visible=True72
EndIf73
74
Me.GridView1.DataSource=pagedData75
Me.GridView1.DataBind()76
77
End Sub78
79
ProtectedSub Next_Click()SubNext_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)80
CurrentPageIndex=Convert.ToInt32(Me.lblCurrentPage.Text)+181
ShowData(CurrentPageIndex)82
End Sub83
84
ProtectedSub btnPrevious_Click()SubbtnPrevious_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)85
CurrentPageIndex=Convert.ToInt32(Me.lblCurrentPage.Text)-186
ShowData(CurrentPageIndex)87
End Sub88
End Class89
90
PublicClass myDesktopModulesClassmyDesktopModules91
Dim_FriendlyNameAsString92
Dim_DescriptionAsString93
PublicProperty FriendlyName()PropertyFriendlyName()AsString94
Get95
Return_FriendlyName96
EndGet97
Set(ByValvalueAsString)98
_FriendlyName=value99
EndSet100
End Property101
PublicProperty Description()PropertyDescription()AsString102
Get103
Return_Description104
EndGet105
Set(ByValvalueAsString)106
_Description=value107
EndSet108
End Property109
110
End Class111
112
End Namespace113
114
Host Setting中的 ASP.NET AJAX 局部渲染
此外, Host Setting 中加入了一个新的AJAX设置Partial Rendering Enabled?(局部渲染设置) 在Host Setting -> Performance Setting, 这个开启这个设置可以应用UpdatePanels来加速admin模式中屏幕上方管理模块的读取速度
原文:Michael Washington
http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1358/Default.aspx