假设我在标准ASP.NET 2.0 Web表单中有以下标记:
<head runat="server">
<title>My Snazzy Page</title>
<link type="text/css" href="<%= PathUtilities.AssetPath %>/css/page.css" rel="stylesheet" />
<script type="text/javascript" src="<%=PathUtilities.AssetPath %>/lib/jquery/1.4.2/jquery.min.js"></script>
</head>
奇怪的是,这会使用嵌入的代码括号逐字呈现<link>
元素,同时将相同代码的输出插入到脚本标记中。换句话说,浏览器会看到:
<head><title>My Snazzy Page
</title><link type="text/css" href="<%= PathUtilities.AssetPath %>/css/page.css" rel="stylesheet" />
<script type="text/javascript" src="/rmt/lib/jquery/1.4.2/jquery.min.js"></script>
</head>
如果我从head元素中删除runat="server"
,显然问题就会消失。
答案 0 :(得分:1)
你所做的是(没有冒犯)有点傻,就是 - 拥有<head>
服务器端元素,嵌套<link>
服务器端 href属性
无论如何,您正在从服务器代码动态呈现 href 值,因此更好的解决方案是从服务器动态呈现链接标记。
示例(页面代码隐藏)
// Define an HtmlLink control.
HtmlLink myHtmlLink = new HtmlLink();
myHtmlLink.Href = "/css/page.css";
myHtmlLink.Attributes.Add("rel", "stylesheet");
myHtmlLink.Attributes.Add("type", "text/css");
// Add the HtmlLink to the Head section of the page.
Page.Header.Controls.Add(myHtmlLink);
然后你的ASPX变得更整洁了:
<head runat="server">
<title>My Snazzy Page</title>
<!-- CSS/JS included dynamically -->
</head>