PropertyUrl 中的简单地址
SimpleAddress from PropertyUrl
- 我的某些页面同时具有长地址 (Page1/Page2/MyPage) 和 简单 (MyPage) 地址。
然后我想通过PropertyUrl在某个地方引用它:
[CultureSpecific]
[Required]
[BackingType(typeof(PropertyUrl))]
[Display(
Name = "Link",
Description = "Link to the page",
GroupName = SystemTabNames.Content,
Order = 1)]
public virtual Url Link { get; set; }
我希望简单地址(如果存在)用于路由或url渲染而不是长地址。
如果存在,我正在寻找一些优雅的解决方案
对其进行了一些修改以更好地适应我的任务:
public static string GetExternalUrl(this Url url)
{
var content = UrlResolver.Service.Route(new UrlBuilder(url));
return GetExternalUrl(content);
}
public static string GetExternalUrl(this ContentReference contentReference)
{
if (ContentReference.IsNullOrEmpty(contentReference)) return null;
var content = ServiceLocator.Current.GetInstance<IContentLoader>().Get<IContent>(contentReference);
return GetExternalUrl(content);
}
public static string GetExternalUrl(this IContent content)
{
var externalProperty = content?.Property["PageExternalURL"];
return !string.IsNullOrWhiteSpace(externalProperty?.ToString()) ? $"/{externalProperty.ToString().Trim('/')}/" : null;
}
- 我的某些页面同时具有长地址 (Page1/Page2/MyPage) 和 简单 (MyPage) 地址。
然后我想通过PropertyUrl在某个地方引用它:
[CultureSpecific] [Required] [BackingType(typeof(PropertyUrl))] [Display( Name = "Link", Description = "Link to the page", GroupName = SystemTabNames.Content, Order = 1)] public virtual Url Link { get; set; }
我希望简单地址(如果存在)用于路由或url渲染而不是长地址。
如果存在,我正在寻找一些优雅的解决方案
对其进行了一些修改以更好地适应我的任务:
public static string GetExternalUrl(this Url url)
{
var content = UrlResolver.Service.Route(new UrlBuilder(url));
return GetExternalUrl(content);
}
public static string GetExternalUrl(this ContentReference contentReference)
{
if (ContentReference.IsNullOrEmpty(contentReference)) return null;
var content = ServiceLocator.Current.GetInstance<IContentLoader>().Get<IContent>(contentReference);
return GetExternalUrl(content);
}
public static string GetExternalUrl(this IContent content)
{
var externalProperty = content?.Property["PageExternalURL"];
return !string.IsNullOrWhiteSpace(externalProperty?.ToString()) ? $"/{externalProperty.ToString().Trim('/')}/" : null;
}