Adding a base tag to your ASP code dynamically
Jul 21, 2007
1 min read
C#
ASP.NET
Windows
.NET
Visual-Studio
Dev
WebForms
Intermediate

by Grundela2007
Contributor
Introduction
When using relative paths in your HTML code, it is helpful to set the base tag. But that base may be different for each developer on your team, or on stage, QA, or production. Also, when making your URL optimized for search engines, your URL will map to a non-existing path. The best way to solve this is by adding the <base href="..."/>
tag to the page header dynamically.
Using the code
The solution is quite simple. First, create a new class called BaseTag
that has the following code:
public class BaseTag : HtmlControl
{
public BaseTag(HttpRequest request): base("base")
{
base.Attributes.Add("href",
request.Url.Scheme + "://" +
request.Url.Authority +
request.ApplicationPath + "/");
}
}
The key part is Url.Scheme
that returns the URL scheme: such as HTTP and HTTPS. Url.Authority
returns the host and port address, if one is provided. Next is the application path that is often unique to the location of the web app directory. Put them all together with the right string construct, and you get a nice well formed href
for the base tag like:
http://someurl:8080/web/
Next, include the following line in the Page_Load
method of your *.aspx.cs file:
protected void Page_Load(object sender, EventArgs e)
{
this.Header.Controls.AddAt(0, new BaseTag(Request));
}
The end result is the <base href="http://someurl:8080/web/"/>
tag.
I hope this is helpful to you.
License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)