gpt4 book ai didi

c# - 如何从 EpiServer PageData 对象中提取友好的 URL?

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:47 26 4
gpt4 key购买 nike

使用 EpiServer 8.0,我们需要从 C# 类中的 PageData 对象获取“友好”URL。如果不转换 URL,内部链接看起来像“localhost/link/[guid].aspx”而不是“localhost/friendly-link”。我看过一些建议如下的在线帖子:

var urlHelper = ServiceLocator.Current.GetInstance<UrlHelper>();
var friendlyUrl = urlHelper.ContentUrl(currentPage.Link);

但是当我尝试这样做时,Visual Studio 返回以下错误:

'System.Web.Mvc.UrlHelper' does not contain a definition for 'ContentUrl' and no extension method 'ContentUrl' accepting a first argument of type 'System.Web.Mvc.UrlHelper' could be found (are you missing a using directive or an assembly reference?)

这是我目前拥有的代码,没有使用语句,因此很容易看到正在使用的命名空间。

var urlHelper = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<System.Web.Mvc.UrlHelper>();
var friendlyUrl = urlHelper.ContentUrl(myPage.Link);

我们的项目中是否缺少使 ContentUrl 起作用的引用?或者我们可以使用一些替代代码从 PageData 对象获取友好的 URL 吗?感谢您的帮助。

最佳答案

您应该使用 UrlResolver

using System.Web.Routing;
using EPiServer.Web.Routing;

public static class PageDataExtensions
{

public static VirtualPathData FriendlyUrl(this ContentReference contentReference)
{
return ServiceLocator.Current.GetInstance<UrlResolver>().GetVirtualPath(contentReference);
// or use the singleton
// return UrlResolver.Current.GetVirtualPath(contentReference);
}

public static VirtualPathData FriendlyUrl(this PageData pageData)
{
var contentReference = pageData.ContentLink;
return ServiceLocator.Current.GetInstance<UrlResolver>().GetVirtualPath(contentReference);
// or use the singleton
// return UrlResolver.Current.GetVirtualPath(contentReference);
}

public static VirtualPathData FriendlyUrl(this IContent iContent)
{
var contentReference = iContent.ContentLink;
return ServiceLocator.Current.GetInstance<UrlResolver>().GetVirtualPath(contentReference);
// or use the singleton
// return UrlResolver.Current.GetVirtualPath(contentReference);
}
}

这将返回 VirtualPathData具有属性 VirtualPath 的对象

你的情况

var friendlyUrl = currentPage.FriendlyUrl().VirtualPath; // using the extensions above

将返回 friendly-url/whatever/page

关于c# - 如何从 EpiServer PageData 对象中提取友好的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097112/

26 4 0
文章推荐: Html
文章推荐: Java:opencv 和 openni
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com