Para solucionar este problema he creado un par de extensiones basadas en la URL. La idea es simple, uso una serie de variables para almacenar el "nombre interno" de las listas y siempre las llamo usando estas constantes. Hasta ahora ha funcionado bien.
/// <summary> /// Returns null if the list is not found /// </summary> public static SPList GetListByInternalName(this SPListCollection Lists, string InternalName) { if (string.IsNullOrEmpty(InternalName)) return null; Guid ListGuid = Lists.GetListIdByInternalName(InternalName); if (ListGuid != Guid.Empty) return Lists[ListGuid]; return null; } /// <summary> /// Returns the UIDC of the list /// </summary> static Guid GetListIdByInternalName(this SPListCollection Lists, string InternalName) { if (string.IsNullOrEmpty(InternalName)) return Guid.Empty; foreach (SPList list in Lists) if (list.GetInternalName().ToLower() == InternalName.ToLower()) return list.ID; return Guid.Empty; } /// <summary> /// Gets the Url of the list. That's what we consider its internal name /// </summary> public static string GetInternalName(this SPList list) { string Url = list.RootFolder.ServerRelativeUrl; string[] split = Url.Split('/'); return split[split.Length - 1]; }
Después de esto el nombre externo de la lista no es relevante y la localización es simple
No hay comentarios:
Publicar un comentario