Gov*_*iya 2 asp.net server-tags
我是<link>标签中的绑定路径
<link rel="stylesheet" media="screen" href='<%= AbsRoot_Path%>UserAccountTemp/css/reset.css' />
Run Code Online (Sandbox Code Playgroud)
但它像那样呈现......
<link rel="stylesheet" media="screen" href="<%= ConfigurationManager.AppSettings["rootpath"].ToString() %>UserAccountTemp/css/reset.css" />
Run Code Online (Sandbox Code Playgroud)
它正在运行<script>标签.
这背后的原因是什么,解决方案是什么?
UPDATE
设置AbsRoot_Path
在web.config中
<add key="rootpath" value="http://localhost:1259/WallProfile/"/>
Run Code Online (Sandbox Code Playgroud)
并设置为AbsRoot_Path
public string AbsRoot_Path = ConfigurationManager.AppSettings["rootpath"].ToString();
Run Code Online (Sandbox Code Playgroud)
编辑:好的,我会在这里更具体.
即使您没有在那里指定属性,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";
}
Run Code Online (Sandbox Code Playgroud)
或者使用我在初始答案中提供的解决方案:
您似乎在<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);
}
Run Code Online (Sandbox Code Playgroud)
同样将AbsRoot_Path变量定义为ConfigurationManager.AppSettings["rootpath"].ToString()有点多余,因为ConfigurationManager.AppSettings["rootpath"]它已经是类型string.
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |