头部标签中的内联代码- ASP.NET
本文关键字:代码 ASP NET 标签 头部 | 更新日期: 2023-09-27 18:14:10
是否有可能在母版页的head标签中这样做,其中有runatserver:
<link rel="Stylesheet" type="text/css" href='<%=Config.ResourcesDomain %>/images/style.css' />
这不起作用,因为它生成了这样的html:
<link rel="Stylesheet" type="text/css" href="<%=Config.ResourcesDomain %>/images/style.css" />
输出呈现为这样的原因:
href="<%=Config.ResourcesDomain %>/images/style.css"
是因为ASP。NET将链接视为HtmlLink
控件,并将href
属性的内容呈现为文字。
将header部分标记为服务器控件是一个奇怪的怪癖,其中某些元素被视为服务器控件(即使没有显式地用runat="server"
属性标记)。
去掉href属性周围的引号可以解决这个问题:
href=<%= Config.ResourcesDomain %>/images/style.css
这样做会停止将link元素视为服务器控件,从而执行代码块并呈现正确的URL。
但是,上面的代码将不带引号的href
值写出来。使用以下命令,将为链接标签添加引号:
href=<%= String.Format("'{0}'", Config.ResourcesDomain) %>/images/style.css
希望对你有帮助。
编辑
奇怪的是,如果你对href
属性使用双引号,并且在代码块中包含双引号,这也解决了这个问题:
href="<%= "" + Config.ResourcesDomain %>/images/style.css"
然而,以上都不是特别优雅的解决方案,从后面的代码设置URL可能是可行的方法。
我在这里找到的另一个解决方案:https://stackoverflow.com/a/5727996/368613——只需将代码放入PlaceHolder:
<asp:PlaceHolder runat="server">
... your code with <%= %> tags ...
</asp:PlaceHolder>
标记
<head>
<asp:Literal ID="litHead" runat="server" />
</head>
后台代码:
在employeelitHead.Text = "<link rel='Stylesheet' type='text/css' href='" + Config.ResourcesDomain + "/images/style.css' />";
更新:
<head runat="server">
<%
Response.Write("<link rel='Stylesheet' type='text/css' href='" + Config.ResourcesDomain + "/images/style.css' />");
%>
<title></title>
</head>
改为
<link rel="Stylesheet" type="text/css" href='<%Response.Write(Config.ResourcesDomain); %>/images/style.css' />
应该可以
删除开头标签上的runat="server"属性。这样,asp.net内联代码就可以正确呈现。
或者这样做:
<head>
<style type="text/css">
@import "<%= ResolveUrl("~/content/styles.css") %>";
@import "<%= ResolveUrl("~/content/print.css") %>" print;
</style>
</head>
显然,当使用内联标签"<%# %>"时需要数据绑定。
<head id="Head">
//Stuff with inline code
</head>
背后的代码:
protected void Page_Load {
Head.DataBind();
}
对