Gdyby jednak tego było mało, to folder layouts w nowym sharepoincie nie nazywa się 'layouts/' (tak jak to było w sharepoint 2010), tylko... 'layouts/15/".
Na szczęście jest sposób, aby można było wykorzystywać te same pliki .cs w obu projektach. Oto on, czyli klasa UrlHelper:
public class UrlHelper
{
public static string LayoutsUrl
{
get
{
PropertyInfo pi = typeof(SPUtility).GetProperty(
"ContextLayoutsFolder", BindingFlags.Public | BindingFlags.Static);
if (pi == null)
return "/_layouts/";
else
return String.Format("/{0}/", pi.GetValue(null, null).ToString());
}
}
public static string ImagesUrl
{
get
{
PropertyInfo pi = typeof(SPUtility).GetProperty("ContextImagesRoot", BindingFlags.Public | BindingFlags.Static);
if (pi == null)
return "/_layouts/images/";
else
return String.Format("{0}", pi.GetValue(null, null).ToString());
}
}
public static string ControlTemplatesUrl
{
get
{
PropertyInfo pi = typeof(SPUtility).GetProperty(" ContextControlTemplatesFolder" , BindingFlags.Public | BindingFlags.Static);
if (pi == null)
return "/_CONTROLTEMPLATES/";
else
return String.Format("/{0}/", pi.GetValue(null, null).ToString());
}
}
}
W praktyce, wszędzie, gdzie odwołujemy się do katalogów związanych z 'layouts', zamiast wpisywać stringi, powinniśmy wykorzystać metodę klasy UrlHelper.
Brak komentarzy:
Prześlij komentarz