2

バックグラウンド

DotNetNuke は、URL にカスタム ページ名を付ける機能をサポートしています。これにより、URL をより人間に優しいものに/Page/itemId/14/Default.aspxすることができます。たとえば、/Page/itemId/14/My-Article.aspx. これを実現するための API は via ですDotNetNuke.Common.Globals.FriendlyUrl(これは単に を呼び出しますDotNetNuke.Services.Url.FriendlyUrl.FriendlyUrlProvider.FriendlyUrl)。

このFriendlyUrlメソッドには、pathandpageNameパラメーターを受け取るいくつかのオーバーロードがあり、意味のあるクエリ文字列パラメーターを 経由pathで指定し、わかりやすいページ名を 経由で指定できますpageNameBruce Chapmanの例に従うと、次のようになります。

FriendlyUrlProvider.Instance().FriendlyUrl(tab, "~/Default.aspx?TabId=" + tab.TabID, "My_Custom_Page_Name.aspx")

問題

このアプローチに関する私の問題は、URL がそのパラメーターで直接指定したパラメーターのみを取得することpathです。で標準的で非友好的なアプローチを使用しGlobals.NavigateURLて、現在のコンテキストとポータルの設定 (最も注目すべきは ) に基づいて追加のパラメーターを取得しますlanguage。実装を再実装/コピーするNavigateURL必要はありませんが、他に選択肢はありません。Bruce はDNN の Gemini イシュー トラッカーpageNameに にパラメータを追加する問題を抱えていますがGlobals.NavigateURL、それは何の注目も集めることなく、かなり長い間そこに置かれていました。

もう 1 つの問題は、わかりやすい URL プロバイダーに拡張子を決定させるのではなく (または拡張子をまったく付けないかどうか)、ページ名に ".aspx" をハードコーディングする必要があることです。

NavigateURLURL でわかりやすいページ名を完全にサポートするには、コアをコピーするのが最善の方法ですか?

4

1 に答える 1

0

上記のわずかな拡張の 1 つは、URLGlobals.ApplicationURL(tabId)の一部を取得するために呼び出すことです。ただし、パラメータ"~/Default.aspx?TabID=x"を手動で追加する必要があります...language

于 2011-04-29T19:58:12.953 に答える