导航到DNN模块

时间:2012-07-13 13:52:52

标签: c# url dotnetnuke dotnetnuke-module navigateurl

我正在制作一份通讯,其中包含我DNN网站内各种html模块的链接。我可以访问他们的每个ModuleID,并且我想使用它来获取网址。目前的方法(由第三方开发人员制作)有效,但仅在一定程度上有效。当模块位于网站的更深处时,网址的格式不正确。

例如位于www.website.com/website/articles.aspx的模块工作正常,但位于www.website.com/website/articles/subarticles.aspx的模块不胜一筹。我知道这是因为网址形成错误。

这是当前的代码:

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;
    }
}

2 个答案:

答案 0 :(得分:1)

如果你有tabid,你真的应该使用NavigateUrl建立链接,你是金色的。

string readMoreLinkPath = NavigateUrl(tabidfrcontent);

美好而简单

答案 1 :(得分:1)

好的,同事建议这样做,它在调度程序中运行良好。

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

将导航到正确的标签ID。因此,如果您被迫在没有一些主要解决方法的情况下无法使用NavigateUrl的调度程序中工作,那么这将是最佳解决方案。