Подтвердить что ты не робот

SharePoint получает полный URL-адрес текущей страницы в коде

В SharePoint, как вы получаете URL-адрес страницы, на которой вы находитесь, из кода? например с включенной страницей blah.aspx...

SPContext.Current.Web.Url дает http://vm/en/

Мне нужно это с http://vm/en/Pages/blah.aspx

4b9b3361

Ответ 1

Вы все еще можете получить HttpContext, а затем используйте HttpContext.Current.Request.Url

SPContext.Current.Web - это SPWeb, окружающий страницу, на которой вы находитесь, и, следовательно, ее URL-адрес является 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