EDIT: OK, I'll be more specific here.
ASP.NET treats <link>
inside <head>
as a server-side controls even if you didn't specify runat="server"
attribute there. So you're actually setting 'href' property of a server-side control, that's why you're getting so strange values there. So the workaround could be either adding id
property for the <link>
and accessing it server side:
<link id='lnkStylesheet' rel="stylesheet" media="screen" />
protected void Page_Init(object sender, EventArgs e)
{
HtmlLink lnkStylesheet= (HtmlLink)Page.Header.FindControl("lnkStylesheet");
lnkStylesheet.Href = AbsRoot_Path + "UserAccountTemp/css/reset.css";
}
or use a solution I provided in my initial answer:
It seems you define your <link>
tag inside a <head>
tag and ASP.NET doesn't allow to use server-side constructs there. But there is an easy workaround for this: you could add <link>
control programmatically (use HtmlLink
server-side control for this):
protected void Page_Init(object sender, EventArgs e)
{
HtmlLink myHtmlLink = new HtmlLink();
myHtmlLink.Href = AbsRoot_Path + "UserAccountTemp/css/reset.css";
myHtmlLink.Attributes.Add("rel", "stylesheet");
myHtmlLink.Attributes.Add("screen", "screen");
Page.Header.Controls.Add(myHtmlLink);
}
Also defining your AbsRoot_Path
variable as ConfigurationManager.AppSettings["rootpath"].ToString()
is a little bit redundant because ConfigurationManager.AppSettings["rootpath"]
is already of type string
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…