SharePoint получает полный URL-адрес текущей страницы в коде
В SharePoint, как вы получаете URL-адрес страницы, на которой вы находитесь, из кода?
например с включенной страницей blah.aspx...
SPContext.Current.Web.Url дает http://vm/en/
Мне нужно это с http://vm/en/Pages/blah.aspx
Ответы
Ответ 1
Вы все еще можете получить HttpContext, а затем используйте HttpContext.Current.Request.Url
SPContext.Current.Web - это SPWeb, окружающий страницу, на которой вы находитесь, и, следовательно, ее URL-адрес является URL-адресом Сети, а не страницей.
Ответ 2
Попробуйте: SPContext.Current.File. Url
Вы также можете использовать HttpContext.Current. Request.Url
Ответ 3
Попробуйте: SPContext.Current.Web.Url + "/" + SPContext.Current.File.Url
Ответ 4
Это должно вернуть то, что вам требуется SPContext.Current.ListItemServerRelativeUrl
Ответ 5
этот код работал у меня, для страниц под _layouts, а также для "нормальных" страниц под сайтом:
string thisPageUrl;
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("_layouts"))
{
thisPageUrl = SPContext.Current.Web.Url + context.Request.Path; //note: cannot rely on Request.Url to be correct !
}
else
{
thisPageUrl = HttpContext.Current.Request.Url.ToString();
}
Ответ 6
Я использую обходное решение, которое охватывает случаи llayouts
/// <summary>
/// Builds real URL considering layouts pages.
/// </summary>
private Uri CurrentUrl
{
get
{
return Request.Url.ToString().ToLower().Contains("_layouts")
? new Uri(
SPContext.Current.Site.WebApplication.GetResponseUri(
SPContext.Current.Site.Zone).ToString().TrimEnd('/')
+ Request.RawUrl)
: Request.Url;
}
}
Ответ 7
string filename = Path.GetFileName(Request.Path);
Ответ 8
string PageTitle=SPContext.Current.File.Title