asp.net - 表达式标签绑定(bind)字符串变量时出现问题

标签 asp.net server-tags

我正在绑定(bind)类似于 标记中的路径

<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> 标记。

这背后的原因是什么以及解决方案是什么?

更新

设置AbsRoot_Path

在 web.config 中

<add key="rootpath" value="http://localhost:1259/WallProfile/"/>

并设置为 AbsRoot_Path

public string AbsRoot_Path = ConfigurationManager.AppSettings["rootpath"].ToString();

最佳答案

编辑:好的,我会在这里更具体。

ASP.NET 对待 <link>里面<head>作为服务器端控件,即使您没有指定 runat="server"属性在那里。所以你实际上是在设置服务器端控件的“href”属性,这就是为什么你会得到如此奇怪的值。因此解决方法可以是添加 id属性为<link>并访问服务器端:

<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";
}

或使用我在最初的答案中提供的解决方案:

看来你定义了你的 <link> <head> 内的标签标记和 ASP.NET 不允许在那里使用服务器端构造。但有一个简单的解决方法:您可以添加 <link>以编程方式控制(为此使用 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 - 表达式标签绑定(bind)字符串变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603086/

相关文章:

asp.net - 从 ASP.NET 4.0 RC 升级到 RTM 后,ASP.NET MVC 2 View 中出现错误

asp.net - 有没有办法让VS2010发布向导在发布站点时复制App_offline.htm?

当用户未经身份验证时,ASP.NET 会覆盖重定向中的默认 returnto 参数

asp.net - 此 ASP.NET 功能的文档在哪里? <%= 字符串格式,params object[] args %>

asp.net - 如何避免添加 runat ="server"破坏我的服务器标签 <%...%>

javascript - 在 MVC 项目中访问 Javascript 内的服务器标签

c# - aspx 页面的内容敏感标题

c# - 如何知道 asp.net 站点是从移动设备还是从系统/笔记本电脑/机器(windows、mac 等)访问的

c# - ServerTags 在 OnClientClick 中不起作用