繁体   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