2017-01-24 22 views
0
  1. 我有一定的頁面同時具有長(Page1/Page2/MyPage)和簡單(MyPage)地址。
  2. 然後我想通過PropertyUrl引用它在某一個地方:SimpleAddress來自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; } 
    
  3. 我想簡單地址(如果存在)用於路由或URL渲染,但不長個。

我找了它的一些優雅的解決方案,如果它存在

回答

1

有一個answer from Brad McDavid

修改它有點更適合我的任務:

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; 
}