[英]Problem in Expression tag to bind string variable
我在<link>標記中綁定這樣的路徑
<link rel="stylesheet" media="screen" href='<%= AbsRoot_Path%>UserAccountTemp/css/reset.css' />
但是它像那樣渲染
<link rel="stylesheet" media="screen" href="<%= ConfigurationManager.AppSettings["rootpath"].ToString() %>UserAccountTemp/css/reset.css" />
它正在工作<script>標簽。
這背后的原因是什么,解決方案是什么?
UPDATE
設置AbsRoot_Path
在web.config中
<add key="rootpath" value="http://localhost:1259/WallProfile/"/>
並設置為AbsRoot_Path
public string AbsRoot_Path = ConfigurationManager.AppSettings["rootpath"].ToString();
編輯:好的,我在這里更具體。
即使您未在其中指定runat="server"
屬性,ASP.NET也會將<link>
<head>
<link>
內的<link>
視為服務器端控件。 因此,您實際上是在設置服務器端控件的'href'屬性,這就是為什么在那里得到如此奇怪的值的原因。 因此,解決方法可能是為<link>
添加id
屬性並在服務器端訪問它:
<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";
}
或使用我在最初的答案中提供的解決方案:
似乎您在<head>
<link>
標記內定義了<link>
標記,而ASP.NET不允許在其中使用服務器端構造。 但這有一個簡單的解決方法:您可以以編程方式添加<link>
控件( HtmlLink
使用HtmlLink
服務器端控件):
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);
}
另外將AbsRoot_Path
變量定義為ConfigurationManager.AppSettings["rootpath"].ToString()
有點多余,因為ConfigurationManager.AppSettings["rootpath"]
已經是string
類型。
如果要讓asp.net評估表達式,則應添加runat = server,或者它是在編寫時才呈現的...所以嘗試像這樣添加runat = server
<link runat=server rel="stylesheet" media="screen" href='<%= AbsRoot_Path%>UserAccountTemp/css/reset.css' />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.