0

我用aspx这样写:

<link type="text/css" href='/theme<%=theme%>/top.css' rel="stylesheet" />

但结果是这样的:

<link type="text/css" href="/theme&lt;%=theme%>/top.css" rel="stylesheet" />

令人惊讶的是,在js中使用是没有问题的。

4

2 回答 2

3

这是因为您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\" />" %>
于 2012-06-12T02:46:20.067 回答
0

您不能使用表达式,<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);
于 2012-06-12T02:59:27.857 回答