原文地址:::http://www.spdeveloper.co.in/tipsntricks/pages/values-for-spsite-spweb-url-properties.aspx
There are some properties for SPSite and SPWeb class using which we can get the URL values for the sites and webs. The two most used of these properties are - 'ServerRelativeUrl' and 'Url'
As a developer we use the values of the properties for writing some logic for satifying the business needs. Whenever I used to write a OM code to use these properties, the first question which flashes in my mind - "What values are returned by these properties?". I immediately create a cosole application, and check the values returned by these properties and contiue with the actual work. I have seen many other developers doing this. So, for a quick reference I prepared the below table which has the url values returned by these properties.
Some poeple may find this easy, but some (like me ;)) get confused when the sites have managed paths. These properties return the managed path if the site has one. Here goes the list
SCENARIO 1: A Site Collection (SPSite) without any managed path.
URL : 'http://rams' | |
---|---|
Property | Value |
SPSite.ServerRelativeUrl | / |
SPSite.Url | http://rams |
SPWeb.ServerRelativeUrl | / |
SPWeb.Url | http://rams |
Url - http://rams/about ('about' is a sub site) | |
SPSite.ServerRelativeUrl | / |
SPSite.Url | http://rams |
SPWeb.ServerRelativeUrl | /about |
SPWeb.Url | http://rams/about |
This looks pretty simple. We get confused when sites are created using managed paths. Below are the samples values for site created with managed paths
SCENARIO 2: A Site Collection with a managed path (of type Explict inclusion). For the below URL '/my' is the managed path
URL : 'http://rams/my' | |
---|---|
Property | Value |
SPSite.ServerRelativeUrl | /my |
SPSite.Url | http://rams/my |
SPWeb.ServerRelativeUrl | /my |
SPWeb.Url | http://rams/my |
Url - http://rams/my/about ('about' is a sub site) | |
SPSite.ServerRelativeUrl | /my |
SPSite.Url | http://rams/my |
SPWeb.ServerRelativeUrl | /my/about |
SPWeb.Url | http://rams/my/about |
SCENARIO 3: A Site Collection with a managed path (of type Wilcard inclusion). For the below URL '/sites' is the managed path, and a site collection is created at '/blog'
URL : 'http://rams/sites/blog' | |
---|---|
Property | Value |
SPSite.ServerRelativeUrl | /sites/blog |
SPSite.Url | http://rams/sites/blog |
SPWeb.ServerRelativeUrl | /sites/blog |
SPWeb.Url | http://rams/sites/blog |
Url - http://rams/sites/blog/about ('about' is a sub site) | |
SPSite.ServerRelativeUrl | /sites/blog |
SPSite.Url | http://rams/sites/blog |
SPWeb.ServerRelativeUrl | /sites/blog/about |
SPWeb.Url |
http://rams/sites/blog/about |