November Happy Hour will be moved to Thursday December 5th.

Class UrlBuilder

Extend the UriBuilder class to make http-assumptions about relative Url's. Use like/instead of System.UriBuilder, but it will handle relative Uri's as if they are http-Uri's.

Inheritance
System.Object
UrlBuilder
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
Namespace: EPiServer
Assembly: EPiServer.dll
Version: 9.12.2
Syntax
public class UrlBuilder
Examples

The example below shows how to useUrlBuilder to merge query strings.

          NameValueCollection myCol = new NameValueCollection();
  myCol.Add("SkipCount", "1");
  myCol.Add("Year", "2009");

  UrlBuilder urlBuilder = new UrlBuilder(CurrentPage.LinkURL); 
  urlBuilder.MergeQueryCollection(myCol);
  string pageLink = (string)urlBuilder;

Constructors

UrlBuilder(Url)

Initializes a new instance of the UrlBuilder class.

Declaration
public UrlBuilder(Url url)
Parameters
Type Name Description
Url url

The URL.

UrlBuilder(UrlBuilder)

Initializes a new instance of the UrlBuilder class.

Declaration
public UrlBuilder(UrlBuilder url)
Parameters
Type Name Description
UrlBuilder url

The URL builder. A memberwise copy is made.

UrlBuilder(String)

Initializes a new instance of the UrlBuilder class.

Declaration
public UrlBuilder(string url)
Parameters
Type Name Description
System.String url

The URL.

UrlBuilder(Uri)

Initializes a new instance of the UrlBuilder class.

Declaration
public UrlBuilder(Uri url)
Parameters
Type Name Description
System.Uri url

The URL.

Properties

Encoding

Gets the encoding used for unescaping and escaping.

Declaration
public Encoding Encoding { get; set; }
Property Value
Type Description
System.Text.Encoding

The encoding. The default is UTF-8.

Fragment

Gets the escaped fragment.

Declaration
public string Fragment { get; set; }
Property Value
Type Description
System.String

A string containing any URI fragment information.

Remarks

This property will strip any # charactes at the beginning of the string when setting the property since they are added by the underlying System.UriBuilder.

HasAuthorityPart

Gets a value indicating whether this instance has any authority part (scheme, username, password, port, host)

Declaration
public bool HasAuthorityPart { get; }
Property Value
Type Description
System.Boolean

true if this instance has any authority part; otherwise, false.

Host

Gets the host component of this instance.

Declaration
public string Host { get; set; }
Property Value
Type Description
System.String

A String containing the host name. This is usually the DNS host name or IP address of the server.

IsEmpty

Gets a value indicating whether this instance is empty.

Declaration
public bool IsEmpty { get; }
Property Value
Type Description
System.Boolean

true if this instance is empty; otherwise, false.

IsPathRelative

Gets a value indicating whether the path is relative.

Declaration
protected bool IsPathRelative { get; }
Property Value
Type Description
System.Boolean

true if the path is relative; otherwise, false.

Password

Gets or sets the password.

Declaration
public string Password { get; set; }
Property Value
Type Description
System.String

The password.

Path

Gets the path. Will return a relative path if the path was relative to start with.

Declaration
public string Path { get; set; }
Property Value
Type Description
System.String

The path.

Port

Gets the port number of this URL.

Declaration
public int Port { get; set; }
Property Value
Type Description
System.Int32

An int value containing the port number for this URL, or -1 for no value set

Query

Gets any query information included in the specified URL.

Declaration
public string Query { get; set; }
Property Value
Type Description
System.String

A String containing any query information included in the specified URL.

Remarks

The Query property contains any query information included in the URI. Query information is separated from the path information by a question mark (?) and continues to the end of the URI. The query information returned includes the leading question mark. The query information is escaped according to RFC 3986.

QueryCollection

Gets or sets a parsed and decoded collection of query string parameters.

Declaration
public NameValueCollection QueryCollection { get; set; }
Property Value
Type Description
System.Collections.Specialized.NameValueCollection

The query collection.

QueryId

Gets and sets the id in the QueryCollection

Declaration
public string QueryId { get; set; }
Property Value
Type Description
System.String

QueryLanguage

Gets and sets the epslanguage in the QueryCollection

Declaration
public string QueryLanguage { get; set; }
Property Value
Type Description
System.String

QueryTemplate

Gets and sets the epstemplate in the QueryCollection

Declaration
public string QueryTemplate { get; set; }
Property Value
Type Description
System.String

Scheme

Gets the scheme name for this URL.

Declaration
public string Scheme { get; set; }
Property Value
Type Description
System.String

A String containing the scheme for this URL, converted to lowercase.

ThisBuilder

Gets or sets this instances' UriBuilder.

Declaration
protected UriBuilder ThisBuilder { get; set; }
Property Value
Type Description
System.UriBuilder

This instances' builder.

Uri

Gets or sets the Uri.

Declaration
public Uri Uri { get; set; }
Property Value
Type Description
System.Uri

The URI.

UserName

Gets or sets the user name

Declaration
public string UserName { get; set; }
Property Value
Type Description
System.String

The user name.

Methods

MakeRelative(String, String)

Make a root-relative path relative another root-relative path

Declaration
protected string MakeRelative(string fromBase, string path)
Parameters
Type Name Description
System.String fromBase

From base.

System.String path

The path.

Returns
Type Description
System.String

If possible, a shorter, relative path

Remarks

The reason for not using VirtualPathUtility.MakeRelative is because it is very slow, and we can make some rather safe assumptions here which speeds things up significantly.

MergeQueryCollection(NameValueCollection)

Merges the query collection with the passed collection.

Declaration
public void MergeQueryCollection(NameValueCollection masterQueryCollection)
Parameters
Type Name Description
System.Collections.Specialized.NameValueCollection masterQueryCollection

The master query collection.

Remarks

If the parameter already exists in the UrlBuilders QueryCollection it will be overwritten with the parameter from the master query collection.

Rebase(UrlBuilder, UrlBuilder, UrlBuilder.RebaseKind)

Rebases this instance assuming it is valid relative the fromBaseUrl to be valid relative toBaseUrl.

Declaration
public bool Rebase(UrlBuilder fromBaseUrl, UrlBuilder toBaseUrl, UrlBuilder.RebaseKind kind)
Parameters
Type Name Description
UrlBuilder fromBaseUrl

From base URL.

UrlBuilder toBaseUrl

To base URL.

UrlBuilder.RebaseKind kind

The form of the result.

Returns
Type Description
System.Boolean

ToString()

Returns a canonical string representation for the specified Url instance.

Declaration
public override string ToString()
Returns
Type Description
System.String

A String instance that contains the unescaped canonical representation of the Uri instance.

Overrides
System.Object.ToString()
Remarks

Do NOT use this method except for debug and human readable output. To get the properly escaped string, cast to a string with (string).

Operators

Explicit(UrlBuilder to String)

Convert the instance to a properly escaped string

Declaration
public static explicit operator string (UrlBuilder ub)
Parameters
Type Name Description
UrlBuilder ub

The UrlBuilder to convert

Returns
Type Description
System.String

A converted UrlBuilder as a string

Extension Methods