随着即将在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
Imports DotNetNuke2
Imports System.Collections.Generic3

4
Namespace DotNetNuke.Modules5
Partial Class Ajax6
Inherits Entities.Modules.PortalModuleBase7
Dim CurrentPageIndex As Integer8
Dim boolUsingAjax As Boolean = False9
10
Protected Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load11

12
If DotNetNuke.Framework.AJAX.IsInstalled() Then13
If dllAjax.SelectedValue = "Using Ajax" Then14
boolUsingAjax = True15
Else16
boolUsingAjax = False17
End If18
Else19
boolUsingAjax = False20
End If21

22
If boolUsingAjax = True Then23
DotNetNuke.Framework.AJAX.IsEnabled = True24
Else25
DotNetNuke.Framework.AJAX.UpdatePanelControl.Visible = False26
End If27

28
If Not Page.IsPostBack Then29
ShowData(1)30
End If31

32
End Sub33

34
Private Sub ShowData(ByVal intCurrentPageIndex As Integer)35

36
Dim mySqlString As New StringBuilder()37

38
mySqlString.Append("SELECT FriendlyName, Description ")39
mySqlString.Append("FROM {databaseOwner}{objectQualifier}DesktopModules ")40
mySqlString.Append("ORDER BY FriendlyName")41

42
Dim colDesktopModules As New List(Of myDesktopModules)43

44
Using dr As IDataReader = _45
CType(DataProvider.Instance().ExecuteSQL(mySqlString.ToString(), Nothing), IDataReader)46
While dr.Read47
Dim objDesktopModules As New myDesktopModules()48
objDesktopModules.FriendlyName = Convert.ToString(dr("FriendlyName"))49
objDesktopModules.Description = Convert.ToString(dr("Description"))50
colDesktopModules.Add(objDesktopModules)51
End While52
End Using53

54
Dim pagedData As New PagedDataSource()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
If pagedData.IsFirstPage Then64
btnPrevious.Visible = False65
Else66
btnPrevious.Visible = True67
End If68
If pagedData.IsLastPage Then69
btnNext.Visible = False70
Else71
btnNext.Visible = True72
End If73

74
Me.GridView1.DataSource = pagedData75
Me.GridView1.DataBind()76

77
End Sub78

79
Protected Sub Next_Click(ByVal sender As Object, ByVal e As System.EventArgs)80
CurrentPageIndex = Convert.ToInt32(Me.lblCurrentPage.Text) + 181
ShowData(CurrentPageIndex)82
End Sub83

84
Protected Sub btnPrevious_Click(ByVal sender As Object, ByVal e As System.EventArgs)85
CurrentPageIndex = Convert.ToInt32(Me.lblCurrentPage.Text) - 186
ShowData(CurrentPageIndex)87
End Sub88
End Class89

90
Public Class myDesktopModules91
Dim _FriendlyName As String92
Dim _Description As String93
Public Property FriendlyName() As String94
Get95
Return _FriendlyName96
End Get97
Set(ByVal value As String)98
_FriendlyName = value99
End Set100
End Property101
Public Property Description() As String102
Get103
Return _Description104
End Get105
Set(ByVal value As String)106
_Description = value107
End Set108
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

Partial
浙公网安备 33010602011771号