SharePoint在后面的代码中获取当前页面的完整URL

时间:2009-10-09 14:47:27

标签: c# sharepoint

在SharePoint中,如何从后面的代码中获取您所在页面的网址? 例如包含blah.aspx页面......

SPContext.Current.Web.Url提供http://vm/en/

我需要http://vm/en/Pages/blah.aspx

8 个答案:

答案 0 :(得分:35)

您仍然可以获取HttpContext,然后使用HttpContext.Current.Request.Url

SPContext.Current.Web是围绕您所在页面的SPWeb,因此其URL是Web的URL,而不是页面。

答案 1 :(得分:9)

答案 2 :(得分:3)

尝试:SPContext.Current.Web.Url +“/”+ SPContext.Current.File.Url

答案 3 :(得分:1)

这应该返回您需要的内容SPContext.Current.ListItemServerRelativeUrl

答案 4 :(得分:1)

此代码适用于我,适用于_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();
        }

答案 5 :(得分:1)

我使用涵盖_layouts案例的解决方法

/// <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;
    }
}

答案 6 :(得分:0)

 string filename = Path.GetFileName(Request.Path);

答案 7 :(得分:-1)

string PageTitle=SPContext.Current.File.Title