6

我正在尝试使用 Response.Write() 方法在 aspx 页面的 <head> 部分中动态插入内容。我需要从代码隐藏对象的属性中注入一个字符串值,该对象是我的 CSS 文件的链接。但是,它在运行时没有被正确处理。该对象在类上是公共的,并在 Page_Load() 事件中被水合。在页面正文中,我可以毫无问题地成功地从 Corpoartion 对象注入其他属性。

为什么这在 <head> 部分不起作用?

这是未正确展开的部分:

<link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />

这是整个 <head> 部分:

<head runat="server">
    <title></title>
    <link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />
    <script language="JavaScript" type="text/JavaScript" src="cntv_menu.js"></script>
    <script language="JavaScript" type="text/JavaScript" src="cntv_category.js"></script>   
</head>

这将无法正常扩展的原因是什么?

4

4 回答 4

6

您不能<%= %>在您的标签runat="server"所在的<head>标签内使用。

您可以<%# %>在代码隐藏中将其更改为和 DataBind ,或者您可以制作链接标签runat="server",给它一个id并从后面的代码中分配属性。

请参阅此答案,其中包含详细信息。

于 2010-02-18T16:10:54.630 回答
0

解决此问题的最佳方法是使用OnPreRender

例子:

首先,定义你的标签:

<link href="~/css/your_default.css" type="text/css" runat="server" id="myCSS" />

在 OnPreRender 上:

protected override void OnPreRender(EventArgs e){
     base.OnPreRender(e);
     myCSS.Attributes["href"] = "~/css/your_new.css";
}
于 2018-06-06T14:31:55.340 回答
0

用这个:

this.myButton.Attributes.Add(attribute, value);

它对我有用:)

于 2017-02-23T14:54:38.967 回答
-1

如果你写出完整的行,你应该没问题:

<%
Response.write("<link href=\"" + Corporation.PageStyleSheet + "\" rel=\"stylesheet\" />");
%>

PS我的语法可能不完全正确,提前抱歉。

于 2010-02-18T16:15:18.283 回答