亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

DNN模塊開發之利器篇:七種武器

2019-11-17 01:31:18
字體:
來源:轉載
供稿:網友

DNN模塊開發之利器篇:七種武器

2014-04-30 09:08 by DNNTools, ... 閱讀, ... 評論, 收藏, 編輯 我們在進行DNN模塊開發時經常需要調用Dotnetnuke.dll中的方法函數,模塊開發用到DNN的方法函數會讓你的開發更加得心應手,下面我們就來介紹一下。1) PortalModuleBase所屬命名空間:DotNetNuke.Entities.Modules這是一個開發DNN模塊所必須繼承的基類,標志性的基類,在此基類中,你可以得到DNN所為你封裝的一些模塊基本信息,毋需你多費周折,其中包括當前用戶UseID,UserInfo,TabID,ModulePath,ModuleConfiguration,LocalResourceFile等等,下邊就簡單解析幾個比較有用的屬性: <1> ModulePath: 模塊根目錄,可以獲取到模塊根目錄所需要的文件,比如腳本文件,圖像文件,比如你想在后臺注冊一個js腳本,代碼可以類似:
  1. ScriptManagerscriptManager=ScriptManager.GetCurrent(Page);
  2. scriptManager.Services.Add(newServiceReference(this.ModulePath+"WebService.asmx"));
  3. scriptManager.Scripts.Add(newScriptReference(this.ModulePath+"js/Utility.js"));
<2> LocalResourceFile: 本地化資源文件,默認是關聯到模塊根目錄下的App_LocalResources下對應文件,比如你開發的模塊用戶控件為xx_view.ascx,那LocalResourceFile就是App_LocalResources/xx_view.ascx.resx(或xx_view.ascx.zh-CN.resx),如果你想手動的注冊本地化支持,代碼可以類似: lblMessage.Text = Localization.GetString("Message", LocalResourceFile)更高級的應用可能就是設置共享本地化資源,也就是說你可以好些UserControl共享一個資源文件,比如你可以設置一個共享資源文件SharedResources.resx(或SharedResources.zh-CN.resx),專門放置一些公共的本地化鍵值對設置,然后添加如下方法到你的基類或后臺代碼,這是一個值得推薦的方法,節省了資源文件的大小(如果說你開發的模塊比較復雜的話,文件的統籌規劃是必不可少的):
  1. PublicFunctionLocalizationByKey(ByValkeyAsString,OptionalByValIsSharedResourceAsBoolean=False)
  2. IfIsSharedResourceThen
  3. ReturnLocalization.GetString(key,SharedResourceFile)
  4. EndIf
  5. ReturnLocalization.GetString(key,LocalResourceFile)
  6. EndFunction
<3> ModuleConfiguration: 當前用戶控件所在的模塊配置信息,比如動態設置模塊標題,是否顯示模塊容器,是否支持打印或聚合等等.比如通過以下代碼你就可以動態的修改模塊標題:
  1. IfNotNull.IsNull(UserId)Then
  2. ModuleConfiguration.ModuleTitle=Localization.GetString("UpdateUserInfo",LocalResourceFile)
  3. Else
  4. ModuleConfiguration.ModuleTitle=Localization.GetString("ModuleTitle",LocalResourceFile)
  5. EndIf
2) Ajax所屬命名空間:DotNetNuke.FrameworkDNN核心封裝支持Ajax功能的輔助類,其中包含了一些及其有用的方法,比如:IsInstalled(): MS Ajax是否安裝IsEnabled(): MS Ajax是否激活RegisterPostBackControl:注冊傳統PostBack控件RegisterScriptManager: 注冊ScriptManager等等.現舉一個應用例子:
  1. ///<summary>
  2. ///RegisterthebackgroundWebserviceandjs-script.
  3. ///</summary>
  4. PRivatevoidRegisterAjaxWebservice()
  5. {
  6. if(DotNetNuke.Framework.AJAX.IsInstalled())
  7. {
  8. DotNetNuke.Framework.AJAX.RegisterScriptManager();
  9. ScriptManagerscriptManager=ScriptManager.GetCurrent(Page);
  10. scriptManager.Services.Add(newServiceReference(this.ModulePath+"ManageService.asmx"));
  11. scriptManager.Scripts.Add(newScriptReference(this.ModulePath+"Utility.js"));
  12. }
  13. }
3) ModuleSettingsBase所屬命名空間:DotNetNuke.Entities.Modules這是DNN模塊設置的基類,其中主要包含兩個方法,LoadSettings和UpdateSettings,當你繼承于它時,你所需要就是重寫這兩個基類方法,方法體實現業務邏輯,關聯的數據庫表為TabModuleSettings或ModuleSettings,這兩個都具有同樣的數據結構,存儲就是類似哈希表的鍵值對,所不同只是他們更新數據的方法不一樣而已:
  1. DimobjModulesAsNewDotNetNuke.Entities.Modules.ModuleController
  2. objModules.UpdateModuleSetting(ModuleId,"timeinterval",txtTimeInterval.Text.Trim.ToString())
  3. DimobjModulesAsNewDotNetNuke.Entities.Modules.ModuleController
  4. objModules.UpdateTabModuleSetting(ModuleId,"timeinterval",txtTimeInterval.Text.Trim.ToString())
而當你仔細參看代碼,在方法中LoadSettings所使用的Settings實質就是TabModuleSettings和ModuleSettings的合并,當然你也可以自行獲取TabModuleSettings或ModuleSettings,dnn給與你更多的控制權:
  1. PublicShadowsReadOnlyPropertySettings()AsHashtable
  2. Get
  3. If_settingsIsNothingThen
  4. 'MergetheTabModuleSettingsandModuleSettings
  5. _settings=Portals.PortalSettings.GetTabModuleSettings(NewHashtable(ModuleSettings),NewHashtable(TabModuleSettings))
  6. EndIf
  7. Return_settings
  8. EndGet
  9. EndProperty
更多信息你可以參看dnn核心模塊,比如Survey,Link等等.我的網站上也有很多DNN模塊展示:http://www.dnntools.net/4) CDefault( or PageBase)所屬命名空間:DotNetNuke.FrameworkPageBase是DNN核心頁面基類,而CDefault是對此有所封裝的類,兩者何時需要主要看你的開發需要,在此我就分別舉兩個例子: <1>一般模塊中的aspx需要繼承PageBase,PageBase主要有LocalResourceFile,PortalSettings等屬性,比如你模塊中存在一個Print.aspx,后臺代碼可以如此聲明:
  1. PartialPublicClassPrint
  2. InheritsPageBase
  3. EndClass
<2>模塊里的用戶控件如果需要控制頁面信息時,可以新增一個屬性BasePage,代碼如下:
  1. PublicReadOnlyPropertyBasePage()AsDotNetNuke.Framework.CDefault
  2. Get
  3. ReturnCType(Me.Page,DotNetNuke.Framework.CDefault)
  4. EndGet
  5. EndProperty
這時你就可以在用戶控件加載時動態修改頁面相關屬性,比如Title: Me.BasePage.Title = Me.BasePage.Title & " - " & m_oEntry.Title本站點博客模塊就是如此動態設置頁面標題的.或你可以直接如此設置:
  1. 'Overridethepagetitle
  2. DimmyPageAsDotNetNuke.Framework.CDefault
  3. myPage=CType(Me.Page,CDefault)
  4. myPage.Title=Localization.GetString("ControlTitle_YourPage",Me.LocalResourceFile)
5) Globals所屬命名空間:DotNetNuke.Common這是DNN模塊開發用得最多的一個靜態類,匯聚了DNN核心最基本的靜態方法,如果你有心想開發好模塊,好好看看這里邊的方法,你會有意想不到的收獲.比如:<1>ConvertDataReaderToDataTable:把DataReader轉化為DataTable<2>ConvertDataReaderToDataSet:把DataReader轉化為DataSet<3>NavigateURL:最經典的DNN導航(跳轉)函數<4> SendMail:DNN核心發送郵件方法<5>FriendlyUrl:友好URL重寫方法<6>GetFileList:獲取DNN站點根目錄下文件列表,如果你在用UrlControl你會覺得這個方法是你所必須知道的.等等.6) CBO ( and Null )所屬命名空間:DotNetNuke.Common.Utilities這是DNN模塊數據層所必備的一個工具類,對此我也曾專題般的討論過,合理的使用CBO決定你即將開發的模塊的命運,比如擴展性,兼容性,維護代價等等.7) DNNClientAPI所屬命名空間:DotNetNuke.UI.Utilities這是DNN赫赫有名的一個輔助類,為DNN模塊開發客戶端腳本和服務器交互起到不可或缺的作用,同時支持本地化使得腳本也真正實現了本地化.最經常使用例如我們需要在點擊某一個刪除按鈕彈出提示信息,如今在DNN模塊及其簡單,就是一句代碼即可:ClientAPI.AddButtonConfirm(cmdAddComment, LocalizationByKey("cmdDeleteCommentMessage"))在此再舉一個比較經典的應用范例,有時我們需要在客戶獲取目標控件并對此操作,可由于asp.net(DNN)在生成頁面時已自動生成客戶端代碼,比如某一TextBox控件screenName最終可能會生成類似dnn_ctr431_QuickLogin_screenName,如果你在客戶端腳本中直用document.getElementById('cmdHome')獲取該控件的話,只會返回一個undefined或null,這時就需要我們在客戶端注冊一個頁面ID前綴,而DNN早為我們想到了,那就是dnn.js腳本為我們提供兩個方法dnn.gerVar和dnn.setVar,具體流程就是首先在頁面注冊頁面前綴:
  1. ClientAPI.RegisterClientReference(this.Page,ClientAPI.ClientNamespaceReferences.dnn);
  2. ClientAPI.RegisterClientVariable(this.Page,"Container_ID",this.ClientID+"_",true);
然后在腳本中你可以直接得到你想要的控件對象:<DIV class="dp-highlighter" id=javascript.
  1. var_ModuleContainer;
  2. if(typeof(_ModuleContainer)=='undefined')_ModuleContainer=dnn.getVar('Container_ID');
  3. varscreenName=$get(_ModuleContainer+'screenName').value;

如果你還不明白,你可以看我的網站,DNN搭建


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久在线观看| 亚洲高清免费观看高清完整版| 亚洲色图激情小说| 亚洲视频在线视频| 国产精品中文久久久久久久| 欧美激情一区二区三区久久久| 亚洲精品福利免费在线观看| 国产精品精品视频| 国产亚洲aⅴaaaaaa毛片| 色综合久久88| 欧美另类69精品久久久久9999| 91中文精品字幕在线视频| 国产精品视频网| 亚洲成年人在线| 亚洲激情自拍图| 亚洲精品美女在线观看播放| 国产精选久久久久久| 日韩欧美精品免费在线| 国产精品久久久久久久久久久久久久| 亚洲日本中文字幕免费在线不卡| 成人免费观看a| 一区二区三区天堂av| 久久综合九色九九| 欧美风情在线观看| 午夜精品免费视频| 亚洲精品网址在线观看| 欧美中文在线视频| 欧美成人午夜剧场免费观看| 欧美极品少妇xxxxⅹ裸体艺术| 日韩电视剧免费观看网站| 中文字幕一精品亚洲无线一区| 国产成人精品日本亚洲专区61| 亚洲国产天堂久久国产91| 欧美激情视频在线免费观看 欧美视频免费一| 久久电影一区二区| 亚洲免费一级电影| 亚洲a一级视频| 国产色婷婷国产综合在线理论片a| 国产这里只有精品| 欧美一级bbbbb性bbbb喷潮片| www.久久久久久.com| 91国产在线精品| 亚洲国产精品久久精品怡红院| 黑人巨大精品欧美一区二区一视频| 91精品久久久久久综合乱菊| 久久视频在线视频| 国产精品一区二区三区久久久| 日韩av一卡二卡| 日韩中文视频免费在线观看| 亚洲日韩欧美视频一区| 国产中文字幕亚洲| 欧美精品午夜视频| 国内精品久久久| 亚洲天堂男人的天堂| 色综合导航网站| 国产一区二区三区免费视频| 国产精品电影观看| 国产精品99免视看9| 国产va免费精品高清在线| 欧美一乱一性一交一视频| 精品国产91久久久久久| 俺也去精品视频在线观看| 欧美激情国产日韩精品一区18| 久久精品电影网站| 中文字幕亚洲国产| 国产精品日韩在线| 96精品视频在线| 日韩电影中文字幕av| 久久精品国产免费观看| 国产精品丝袜久久久久久高清| 国产一区二区三区三区在线观看| 另类天堂视频在线观看| 精品欧美aⅴ在线网站| 91精品久久久久久久久久另类| 精品在线欧美视频| 欧美黑人xxxⅹ高潮交| 日韩亚洲一区二区| 成人免费大片黄在线播放| 日韩精品一区二区三区第95| 91最新在线免费观看| 精品久久久久久久久久国产| 欧美激情手机在线视频| 亚洲美女免费精品视频在线观看| 亚洲精品日韩激情在线电影| 成人精品视频在线| 成人情趣片在线观看免费| 国产精品精品久久久| 国产女精品视频网站免费| 日本一欧美一欧美一亚洲视频| 亚洲欧美日本伦理| 欧美日韩午夜视频在线观看| 亚洲成人久久电影| 91sao在线观看国产| 97精品在线视频| 97视频在线看| 亚洲国产日韩欧美在线图片| 欧洲成人性视频| 九九热精品视频在线播放| 国产精品一区二区久久| 91免费精品国偷自产在线| 久久久久久12| 国产精品444| 精品福利视频导航| 91免费精品视频| 夜夜嗨av一区二区三区免费区| 欧美黄色片免费观看| 少妇精69xxtheporn| 77777少妇光屁股久久一区| 国产日韩专区在线| 亚洲精品视频在线播放| 国色天香2019中文字幕在线观看| 久久久久久久国产精品| 久久天天躁日日躁| 中文日韩在线观看| 国产一区在线播放| 国内精品久久影院| 97久久精品视频| 成人网在线视频| 91精品国产乱码久久久久久久久| 国产精品三级久久久久久电影| 久久人人97超碰精品888| 欧美午夜精品久久久久久浪潮| 成人有码视频在线播放| 日韩中文字幕网址| 久热精品视频在线免费观看| 久久天堂电影网| 国产精品一区=区| 久久精品国产成人| 国产美女高潮久久白浆| 国模精品系列视频| 国产精品夜色7777狼人| 成人自拍性视频| 午夜欧美不卡精品aaaaa| 26uuu国产精品视频| 国产日韩精品综合网站| 亚洲成年人在线播放| 97国产精品久久| 欧美激情一区二区三区久久久| 亚洲最大福利视频| 国产精品91在线观看| 欧美日韩国产一区二区三区| 亚洲xxx视频| 亚洲久久久久久久久久久| 色综合天天狠天天透天天伊人| 亚洲在线视频福利| 国产女人18毛片水18精品| 日韩第一页在线| 国产欧美一区二区三区久久| 亚洲国产精品悠悠久久琪琪| 日本精品视频在线| 欧美有码在线视频| 国产精品成人一区二区三区吃奶| 91色视频在线观看| 国产精品夜间视频香蕉| 日韩欧美大尺度| 91精品91久久久久久| 欧美高跟鞋交xxxxhd| 精品视频在线播放色网色视频| 久久久国产精品一区| 精品久久久久久中文字幕大豆网| 91成人精品网站| 亚洲偷欧美偷国内偷| 亚洲影院色无极综合| 久久免费国产视频|