我正在制作一份通讯,其中包含我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;
}
}
答案 0 :(得分:1)
如果你有tabid,你真的应该使用NavigateUrl建立链接,你是金色的。
string readMoreLinkPath = NavigateUrl(tabidfrcontent);
美好而简单
答案 1 :(得分:1)
好的,同事建议这样做,它在调度程序中运行良好。
string linkPath = basePath + "/Default.aspx?TabID=" + tabID;
将导航到正确的标签ID。因此,如果您被迫在没有一些主要解决方法的情况下无法使用NavigateUrl
的调度程序中工作,那么这将是最佳解决方案。