dotnetnuke mysql_DotNetNuke 4.5: 如何创建支持Asp.net Ajax 的DNN模块

这篇文章将概述如何在DotNetNuke框架下应用Asp.net Ajax创建模块.

随着即将在3月15号发布的DNN4.5 大家期待已久的对Asp.net Ajax的支持将在此版中发布。

因为Asp.net Ajax 是独立于DNN安装的,所以DNN框架并不能保证你所应用的服务器是否安装Asp.net Ajax, 因此新版的DNN中增加了一个新的类DotNetNuke.Framework.AJAX, 这个类中所提供的方法可以帮助开发者判定是否可以把AJAX应用于你的方案中。

bf6ccaa9cb6d76b21d039c8140484b67.png

6da06c80a6ceecc3dbad0040b1492ccf.png

模块配置 Dependencies

开发DotNetNuke ASP.NET AJAX 模块其中的一种方法是指明System.Web.UI.ScriptManager 的从属关系在模块设置中(module configuration setting)

ab98ec7dad0caa2ca33e927b1701ac70.png

模块可以随意指定多个从属程序集根据需要,用分号分隔开。例如填入System.Web.UI.ScriptManager 即可应用相应功能, 但前提要求你的服务器支持Ajax.。 之后在安装模块的时候如果运行环境不符合将会有警告提示并且中断安装。

340a01a0873d4502caa1ed14ffe1ce02.png

IsInstalled 和 IsEnabled

如果你希望自动判断何时使用ASP.NET AJAX 就可以使用IsInstalled和IsEnabled来设置

IsInstalled可以判断你所应用的系统是否安装了Asp.net Ajax

IsEnabled 设置是由开发者设定是否在所开发的模块/皮肤中应用AJAX

IsInstalled

IsInstalled 使用很简单可以在调用Asp.net Ajax 功能之前用来判断。它将会返回true / false

731655954c7be9d8835ece551b5385f8.pngDotNetNuke.Framework.AJAX.IsInstalled()

IsEnabled

IsEnabled 设置是由开发者设定是否在所开发的模块/皮肤中应用AJAX

731655954c7be9d8835ece551b5385f8.pngDotNetNuke.Framework.AJAX.IsEnabled=True

ASP.NET AJAX 应用样例

AJAX 样例可以在此下载 (需要DNN4.5以上版本才可运行)

样例示范如何应用ASP.net Ajax在run-time

1

731655954c7be9d8835ece551b5385f8.pngImportsDotNetNuke2731655954c7be9d8835ece551b5385f8.pngImportsSystem.Collections.Generic3731655954c7be9d8835ece551b5385f8.png424a924a57ba6b3f2b51fc9edb7ea4186.png

9310e85a14af99de4811ff4c77f1f911.pngNamespace DotNetNukeNamespaceDotNetNuke.Modules5715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngPartialClass AjaxClassAjax61408c5260b2f05e450dee929db9be5f7.pngInheritsEntities.Modules.PortalModuleBase71408c5260b2f05e450dee929db9be5f7.pngDimCurrentPageIndexAsInteger81408c5260b2f05e450dee929db9be5f7.pngDimboolUsingAjaxAsBoolean=False91408c5260b2f05e450dee929db9be5f7.png10715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngProtectedSub Page_Load()SubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load111408c5260b2f05e450dee929db9be5f7.png121408c5260b2f05e450dee929db9be5f7.pngIfDotNetNuke.Framework.AJAX.IsInstalled()Then131408c5260b2f05e450dee929db9be5f7.pngIfdllAjax.SelectedValue="Using Ajax"Then141408c5260b2f05e450dee929db9be5f7.png                    boolUsingAjax=True151408c5260b2f05e450dee929db9be5f7.pngElse161408c5260b2f05e450dee929db9be5f7.png                    boolUsingAjax=False171408c5260b2f05e450dee929db9be5f7.pngEndIf181408c5260b2f05e450dee929db9be5f7.pngElse191408c5260b2f05e450dee929db9be5f7.png                boolUsingAjax=False201408c5260b2f05e450dee929db9be5f7.pngEndIf211408c5260b2f05e450dee929db9be5f7.png221408c5260b2f05e450dee929db9be5f7.pngIfboolUsingAjax=TrueThen231408c5260b2f05e450dee929db9be5f7.png                DotNetNuke.Framework.AJAX.IsEnabled=True241408c5260b2f05e450dee929db9be5f7.pngElse251408c5260b2f05e450dee929db9be5f7.png                DotNetNuke.Framework.AJAX.UpdatePanelControl.Visible=False261408c5260b2f05e450dee929db9be5f7.pngEndIf271408c5260b2f05e450dee929db9be5f7.png281408c5260b2f05e450dee929db9be5f7.pngIfNotPage.IsPostBackThen291408c5260b2f05e450dee929db9be5f7.png                ShowData(1)301408c5260b2f05e450dee929db9be5f7.pngEndIf311408c5260b2f05e450dee929db9be5f7.png325bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Sub331408c5260b2f05e450dee929db9be5f7.png34715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngPrivateSub ShowData()SubShowData(ByValintCurrentPageIndexAsInteger)351408c5260b2f05e450dee929db9be5f7.png361408c5260b2f05e450dee929db9be5f7.pngDimmySqlStringAsNewStringBuilder()371408c5260b2f05e450dee929db9be5f7.png381408c5260b2f05e450dee929db9be5f7.png            mySqlString.Append("SELECT FriendlyName, Description")391408c5260b2f05e450dee929db9be5f7.png            mySqlString.Append("FROM {databaseOwner}{objectQualifier}DesktopModules")401408c5260b2f05e450dee929db9be5f7.png            mySqlString.Append("ORDER BY FriendlyName")411408c5260b2f05e450dee929db9be5f7.png421408c5260b2f05e450dee929db9be5f7.pngDimcolDesktopModulesAsNewList(Of myDesktopModules)431408c5260b2f05e450dee929db9be5f7.png441408c5260b2f05e450dee929db9be5f7.png            Using drAsIDataReader=_451408c5260b2f05e450dee929db9be5f7.pngCType(DataProvider.Instance().ExecuteSQL(mySqlString.ToString(),Nothing), IDataReader)461408c5260b2f05e450dee929db9be5f7.pngWhiledr.Read471408c5260b2f05e450dee929db9be5f7.pngDimobjDesktopModulesAsNewmyDesktopModules()481408c5260b2f05e450dee929db9be5f7.png                    objDesktopModules.FriendlyName=Convert.ToString(dr("FriendlyName"))491408c5260b2f05e450dee929db9be5f7.png                    objDesktopModules.Description=Convert.ToString(dr("Description"))501408c5260b2f05e450dee929db9be5f7.png                    colDesktopModules.Add(objDesktopModules)511408c5260b2f05e450dee929db9be5f7.pngEndWhile521408c5260b2f05e450dee929db9be5f7.pngEndUsing531408c5260b2f05e450dee929db9be5f7.png541408c5260b2f05e450dee929db9be5f7.pngDimpagedDataAsNewPagedDataSource()551408c5260b2f05e450dee929db9be5f7.png            pagedData.DataSource=colDesktopModules561408c5260b2f05e450dee929db9be5f7.png            pagedData.AllowPaging=True571408c5260b2f05e450dee929db9be5f7.png            pagedData.PageSize=10581408c5260b2f05e450dee929db9be5f7.png            pagedData.CurrentPageIndex=intCurrentPageIndex-1591408c5260b2f05e450dee929db9be5f7.png601408c5260b2f05e450dee929db9be5f7.pngMe.lblTotalPages.Text=Convert.ToString(pagedData.PageCount)611408c5260b2f05e450dee929db9be5f7.pngMe.lblCurrentPage.Text=Convert.ToString(pagedData.CurrentPageIndex+1)621408c5260b2f05e450dee929db9be5f7.png631408c5260b2f05e450dee929db9be5f7.pngIfpagedData.IsFirstPageThen641408c5260b2f05e450dee929db9be5f7.png                btnPrevious.Visible=False651408c5260b2f05e450dee929db9be5f7.pngElse661408c5260b2f05e450dee929db9be5f7.png                btnPrevious.Visible=True671408c5260b2f05e450dee929db9be5f7.pngEndIf681408c5260b2f05e450dee929db9be5f7.pngIfpagedData.IsLastPageThen691408c5260b2f05e450dee929db9be5f7.png                btnNext.Visible=False701408c5260b2f05e450dee929db9be5f7.pngElse711408c5260b2f05e450dee929db9be5f7.png                btnNext.Visible=True721408c5260b2f05e450dee929db9be5f7.pngEndIf731408c5260b2f05e450dee929db9be5f7.png741408c5260b2f05e450dee929db9be5f7.pngMe.GridView1.DataSource=pagedData751408c5260b2f05e450dee929db9be5f7.pngMe.GridView1.DataBind()761408c5260b2f05e450dee929db9be5f7.png775bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Sub781408c5260b2f05e450dee929db9be5f7.png79715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngProtectedSub Next_Click()SubNext_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)801408c5260b2f05e450dee929db9be5f7.png        CurrentPageIndex=Convert.ToInt32(Me.lblCurrentPage.Text)+1811408c5260b2f05e450dee929db9be5f7.png        ShowData(CurrentPageIndex)825bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Sub831408c5260b2f05e450dee929db9be5f7.png84715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngProtectedSub btnPrevious_Click()SubbtnPrevious_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)851408c5260b2f05e450dee929db9be5f7.png        CurrentPageIndex=Convert.ToInt32(Me.lblCurrentPage.Text)-1861408c5260b2f05e450dee929db9be5f7.png        ShowData(CurrentPageIndex)875bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Sub885bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Class891408c5260b2f05e450dee929db9be5f7.png90715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngPublicClass myDesktopModulesClassmyDesktopModules911408c5260b2f05e450dee929db9be5f7.pngDim_FriendlyNameAsString921408c5260b2f05e450dee929db9be5f7.pngDim_DescriptionAsString93715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngPublicProperty FriendlyName()PropertyFriendlyName()AsString941408c5260b2f05e450dee929db9be5f7.pngGet951408c5260b2f05e450dee929db9be5f7.pngReturn_FriendlyName961408c5260b2f05e450dee929db9be5f7.pngEndGet971408c5260b2f05e450dee929db9be5f7.pngSet(ByValvalueAsString)981408c5260b2f05e450dee929db9be5f7.png            _FriendlyName=value991408c5260b2f05e450dee929db9be5f7.pngEndSet1005bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Property101715f2d05503b99d41f3b6ba2cdccc84d.png

e083dfde5a91f50979fe8979b4012b9d.pngPublicProperty Description()PropertyDescription()AsString1021408c5260b2f05e450dee929db9be5f7.pngGet1031408c5260b2f05e450dee929db9be5f7.pngReturn_Description1041408c5260b2f05e450dee929db9be5f7.pngEndGet1051408c5260b2f05e450dee929db9be5f7.pngSet(ByValvalueAsString)1061408c5260b2f05e450dee929db9be5f7.png                _Description=value1071408c5260b2f05e450dee929db9be5f7.pngEndSet1085bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Property1091408c5260b2f05e450dee929db9be5f7.png1105bcb1807ee3e00d2b3c225f0b3f5c751.pngEnd Class1111408c5260b2f05e450dee929db9be5f7.png112f466905a3bcb5dcef110eab799825254.pngEnd Namespace113731655954c7be9d8835ece551b5385f8.png114731655954c7be9d8835ece551b5385f8.png

Host Setting中的 ASP.NET AJAX 局部渲染

此外, Host Setting 中加入了一个新的AJAX设置Partial Rendering Enabled?(局部渲染设置) 在Host Setting -> Performance Setting, 这个开启这个设置可以应用UpdatePanels来加速admin模式中屏幕上方管理模块的读取速度

93d0adb20bdf413b8a8d9289e2b57630.png

原文:Michael Washington

http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1358/Default.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值