gpt4 book ai didi

c# - 如何在 DotNetNuke 中创建带有自定义页面名称的友好 URL?

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:22 24 4
gpt4 key购买 nike

背景

DotNetNuke 支持为 URL 提供自定义页面名称的能力,以使 URL 更加人性化,例如代替 /Page/itemId/14/Default.aspx,您可以使用 /Page/itemId/14/My-Article.aspx。实现此目的的 API 是通过 DotNetNuke.Common.Globals.FriendlyUrl(它仅调用 DotNetNuke.Services.Url.FriendlyUrl.FriendlyUrlProvider.FriendlyUrl)。

这个 FriendlyUrl 方法有一些重载,它们采用 pathpageName 参数,您可以在其中通过 指定有意义的查询字符串参数path 和通过 pageName 的友好页面名称。继 example from Bruce Chapman ,可能看起来像这样:

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

问题

我对这种方法的问题是 URL 仅获取我在该 path 参数中直接指定的参数。将标准的、不友好的方法与 Globals.NavigateURL 结合使用,我将获得基于当前上下文和门户设置(最值得注意的是 language)的附加参数。我宁愿不必重新实现/复制 NavigateURL 实现,但我看不到任何其他选择。布鲁斯有 an issue in DNN's Gemini issue tracker这会将 pageName 参数添加到 Globals.NavigateURL,但它已经在那里放置了很长一段时间而没有引起任何注意。

另一个问题是我必须将“.aspx”硬编码到页面名称上,而不是让友好的 URL 提供者决定扩展名应该是什么(或者是否完全不使用扩展名)。

我是否遗漏了什么,或者复制核心 NavigateURL 是我获得对 URL 中友好页面名称的全面支持的最佳选择?

最佳答案

对上述内容的一个细微改进是调用 Globals.ApplicationURL(tabId) 以获取 URL 的 "~/Default.aspx?TabID=x" 部分.不过,您仍然需要手动添加 language 参数...

关于c# - 如何在 DotNetNuke 中创建带有自定义页面名称的友好 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com