在Umbraco做一个项目,我在一个案例中遇到了问题,当调用node.NiceUrl时,我得到#作为结果。但奇怪的是,如果我以某种方式调试它,它会解析为正确的URL。
var pages = Pages.Select((item, index) => new
{
Url = item.NiceUrl,
Selected = item.Id == currentPage.Id,
Index = index
}).ToList();
从哪里获取页面:
CurrentPage.Parent.ChildrenAsList
答案 0 :(得分:3)
如果我这样做,它有效,但我不知道为什么。
Url = new Node(item.Id).NiceUrl,
答案 1 :(得分:3)
我遇到了这个错误,那是因为id属于媒体节点。
媒体的处理方式与其他内容不同,因为different types of media store the url in different ways depending on context没有简单的方法来获取网址。这就是NiceUrl功能不适用于媒体的原因(根据umbraco开发人员的说法)。
我的具体方案是使用已使用媒体选择器选择的图像。我通过以下代码获取了url。我将它包装在扩展方法中,以便您可以方便地从模板中使用它。
public static string GetMediaPropertyUrl(this IPublishedContent thisContent, string alias, UmbracoHelper umbracoHelper = null)
{
string url = "";
if (umbracoHelper == null)
umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var property = thisContent.GetProperty(alias);
string nodeID = property != null ? property.Value.ToString() : "";
if (!string.IsNullOrWhiteSpace(nodeID))
{
//get the media via the umbraco helper
var media = umbracoHelper.TypedMedia(nodeID);
//if we got the media, return the url property
if (media != null)
url = media.Url;
}
return url;
}
答案 2 :(得分:2)
试试这个
Url = umbraco.library.NiceUrl(Item.Id);