簡體   English   中英

Expression標簽綁定字符串變量時出現問題

[英]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="&lt;%= ConfigurationManager.AppSettings[&quot;rootpath&quot;].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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM