In order to solve this issue I have created a couple of wrappers based on the URL. The idea is simple, I use a set of constants to store the “internal names” of the lists and always retrieve them using this constants. So far it has worked fine.
/// <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];
}
After this the display name of the list is not relevant any more and localization is simple




No comments:
Post a Comment