2011-04-29 15 views
5

Haciendo un proyecto en Umbraco, y he encontrado problemas en un caso que cuando llamo a node.NiceUrl obtengo # como resultado. Lo que es extraño es que si lo depuro de alguna manera se resuelve en la URL correcta.Nodo de llamada.NiceUrl me da # en Umbraco

var pages = Pages.Select((item, index) => new 
{ 
    Url = item.NiceUrl, 
    Selected = item.Id == currentPage.Id, 
    Index = index 
}).ToList(); 

donde las páginas se obtiene a partir de:

CurrentPage.Parent.ChildrenAsList 

Respuesta

3

Si lo hago de esta manera, funciona, pero no sé qué.

Url = new Node(item.Id).NiceUrl, 
2

Trate como esto

Url = umbraco.library.NiceUrl(Item.Id); 
+0

la biblioteca también tiene un método para recuperar la URL completa con el nombre de dominio, ideal para enviar mensajes de correo electrónico: cadena termsUrl = umbraco.library.NiceUrlWithDomain (1267); –

3

He encontrado este error y fue debido a que la identificación pertenecía a un nodo de comunicación.

Los medios se tratan de manera diferente a otros contenidos y no hay una manera fácil de obtener la url porque different types of media store the url in different ways depending on context. Es por eso que la función NiceUrl no funciona para medios (de acuerdo con los desarrolladores de umbraco).

Mi escenario específico era el uso de imágenes que se habían seleccionado con un selector de medios. Recibí la url a través del siguiente código. Lo envolví en un método de extensión para que pueda consumirlo de una plantilla de una manera conveniente.

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