0

DNN Web サイト内のさまざまな html モジュールへのリンクを含むニュースレターを作成しています。それぞれの ModuleID にアクセスでき、それを使用して URL を取得したいと考えています。現在のアプローチ (サードパーティの開発者によって作成された) は機能しましたが、ある程度しか機能しませんでした。モジュールが Web サイトの奥にある場合、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 に答える