Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I have an application page, added to a site collection. I open the page by the url: http://servername/sitecollection/_layout/sc/page.aspx

I have added some links, which should open the SAME Url with an additional query string. But it doesn't work. I've tried alot of methods, but all the links routes me to http://servername/_layout/sc/page.aspx.

So how can I programmaticly find the right url?

I've tried Http.Context, Request and so on, but one works. :\

So does anyone have an Idea?

Best Regards

Jan

PS: My system is SP2010 Standard Edition Service Pack 2.

Edit:

Here are some of the Methods I have tried:

return SPContext.Current.Site.MakeFullUrl(SPContext.Current.Web.ServerRelativeUrl);

return SPContext.Current.Site.MakeFullUrl(SPContext.Current.Web.ServerRelativeUrl);

return HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path);

return SPContext.Current.File.Url;

return "http://" + Request.ServerVariables["SERVER_NAME"] + Request.ServerVariables["URL"];
share|improve this question
    
Are you sure about links? Maybe it's realy link to servername/_layout/sc/page.aspx, but not to servername/sitecollection/_layout/sc/page.aspx ? –  IAfanasov Dec 23 '11 at 12:24
    
The problem is that I open this page by the url with the site collection. –  Smokefoot Dec 23 '11 at 12:58
add comment

2 Answers 2

up vote 4 down vote accepted

I prefer to use following:

SPUtility.GetServerRelativeUrlFromPrefixedUrl("~sitecollection/_layouts/sc/page.aspx") 
SPUtility.GetServerRelativeUrlFromPrefixedUrl("~site/_layouts/sc/page.aspx")

First one for site collection relative url and the other one for site relative url.

share|improve this answer
    
Good point - this is much 'nicer'... –  Bernd Rickenberg Dec 24 '11 at 13:04
add comment

You can simply use:

/_layout/sc/page.aspx

If you need the context of the current site in the application page, use:

SPContext.Current.Web.Url + "/_layout/sc/page.aspx"
share|improve this answer
    
Hey, ok that was easy... thought about an automatic solution but it hasn't worked. So your solution fits my problem. Thank you very much! Marry Christmas! –  Smokefoot Dec 23 '11 at 14:02
    
Hope it does not throw an error when SPContext.Current.Web.Url results in "/". –  Ashish Patel Dec 23 '11 at 15:07
    
no it doesn't. It fits the problem very well. –  Smokefoot Dec 28 '11 at 15:53
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.