0

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

例如,位于 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;
    }
}
4

2 回答 2

1

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

string readMoreLinkPath = NavigateUrl(tabidfrcontent);

漂亮又简单

于 2012-07-13T19:19:47.097 回答
1

好的,同事建议这样做,它在调度程序中工作得很好。

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

将导航到正确的选项卡 ID。因此,如果您被迫在NavigateUrl没有一些主要变通办法的情况下无法使用的调度程序中工作,这将是最好的解决方案。

于 2012-07-17T12:58:45.823 回答