One easy way to do this is to replace your LINK tag in the ASPX with a Literal server control. The Literal control is a placeholder for rendering text into the HTML. By assigning your LINK tag to the Text property of a Literal, you manage the style sheet of a page from the code behind.
Here is an example ASPX file
<%@ Page language="c#" Codebehind="DynamicStyleSheet.aspx.cs" AutoEventWireup="false" Inherits="aspnet.DynamicStyleSheet" % > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>DynamicStyleSheet</title> <asp:Literal id="StyleSheet" runat="Server" /> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <h6>hello world</h6> </form> </body> </HTML>
The corresponding code behind file
public class DynamicStyleSheet : System.Web.UI.Page { protected System.Web.UI.WebControls.Literal StyleSheet; private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { const string styleFormat = "<LINK href='\"{0}\"' type='\"text/css\"' rel='\"stylesheet\"'>"; string linkText; linkText = String.Format(styleFormat, StyleSheetPath); StyleSheet.Text = linkText; } } protected string StyleSheetPath { get { // pull the stylesheet name from a database or xml file... return ApplicationPath + "MyStyle.css"; } } private string ApplicationPath { get { string result = Request.ApplicationPath; if(!result.EndsWith("/")) { result += "/"; } return result; } } }