2012-07-13 110 views
0

我正在形成一個通訊,其中包含指向DNN網站中各種html模塊的鏈接。我有權訪問他們的每個ModuleID,我想用它來獲取URL。目前的方法(由第三方開發人員制定)工作,但僅在一定程度上。當模塊位於網站更深處時,URL的形成不正確。導航到DNN模塊

例如位於www.website.com/website/articles.aspx的模塊工作正常,但位於www.website.com/website/articles/subarticles.aspx的模塊不會。我知道這是因爲url不正確。

下面是當前的代碼:

DotNetNuke.Entities.Modules.ModuleController objModCtrlg = new DotNetNuke.Entities.Modules.ModuleController(); 
DotNetNuke.Entities.Modules.ModuleInfo dgfdgdg = objModCtrlg.GetModule(ContentMID); 
TabController objtabctrll = new TabController(); 
TabInfo objtabinfoo = objtabctrll.GetTab(tabidfrcontent); 
string tabnamefremail= objtabinfoo.TabName; 
moduletitlefrEmail = dgfdgdg.ModuleTitle; 
string readmorelinkpath = basePath + "/" + tabnamefremail + ".aspx"; 

ContentMID是我期待在當前模塊ID。我試圖使用Globals.NavigateURL,但總是與Object reference not set to an instance of an object.錯誤崩潰。當我使用objtabinfoo.FullUrl時,同樣的事情,所以我目前對如何獲取特定模塊URL感到迷茫。

編輯:下面是一些關於如何檢索tabId的代碼。

IDictionary<int, TabInfo> dicTabInfo12 = new Dictionary<int, TabInfo>(); 
ContentMID = Convert.ToInt32(dsNewsList.Tables[0].Rows[i]["ModuleID"]); 
dicTabInfo12 = objTabctrl.GetTabsByModuleID(ContentMID); 
if (dicTabInfo12.Count > 0) 
{ 
    string tester = ""; //Debug 
    foreach (KeyValuePair<int, TabInfo> item1 in dicTabInfo12) 
    { 
     tabidfrcontent = item1.Key; 
    } 
} 

回答

1

好,同事建議這和它調度中的偉大工程。

string linkPath = basePath + "/Default.aspx?TabID=" + tabID; 

將導航到正確的選項卡ID。因此,如果您不得不使用NavigateUrl而沒有采取一些主要的解決方法,那麼這將是最佳解決方案。

1

你真的應該使用NavigateUrl建立鏈接,如果你有tabid,你是金。

string readMoreLinkPath = NavigateUrl(tabidfrcontent); 

尼斯和簡單

+0

我仍然得到'對象引用未設置爲對象的實例'我不明白爲什麼。我唯一的猜測是tabid可能是錯的。不幸的是,我無法正確調試,因此我依靠寫入文本文件的消息。 – Mitchell 2012-07-13 19:31:18

+0

我剛剛看到這篇文章http://www.dotnetnuke.com/Resources/Forums/forumid/203/postid/361541/scope/posts.aspx我在計劃任務中使用它,這可能是爲什麼我會得到錯誤。問題是,我將如何獲取並分配門戶網站設置? – Mitchell 2012-07-13 20:21:34