我用aspx这样写:
<link type="text/css" href='/theme<%=theme%>/top.css' rel="stylesheet" />
但结果是这样的:
<link type="text/css" href="/theme<%=theme%>/top.css" rel="stylesheet" />
令人惊讶的是,在js中使用是没有问题的。
我用aspx这样写:
<link type="text/css" href='/theme<%=theme%>/top.css' rel="stylesheet" />
但结果是这样的:
<link type="text/css" href="/theme<%=theme%>/top.css" rel="stylesheet" />
令人惊讶的是,在js中使用是没有问题的。
这是因为您link
位于<head>
运行服务器的标签内。head 标签是“智能的”,因为当它看到一个<link>
标签时,它可以让你实际使用应用程序的相对路径语法:~/. 因此,如果您这样做(在您的 head 标签内):
<link href="~/Content/Site.css" rel="stylesheet" />
您会看到它实际上会起作用(也就是说,它会将波浪号扩展到您站点的正确位置),即使您在任何地方都没有说 runat server。当然,不利的一面是当您不希望它这样做时。:) 可能最简单的解决方案是自己手动构建标签,如下所示:
<%= "<link type=\"text/css\" href='/theme" + theme + "/top.css' rel=\"stylesheet\" />" %>
您不能使用表达式,<head runat="server">
而是必须在 Page_Load 事件中编写以下代码才能插入<link/>
HtmlLink link = new HtmlLink();
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "Stylesheet");
link.Attributes.Add("href", "/theme" + theme + "/top.css");
Header.Controls.Add(link);