在aspx页面的部分中不能使用Response.Write?

时间:2010-02-18 16:09:09

标签: asp.net head response.write

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

为什么这不适用于<头>部?

这是无法正确扩展的部分:

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

这是整个&lt;头&gt;部分:

<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 个答案:

答案 0 :(得分:6)

您无法在<%= %>标记内使用runat="server"<head>标记。

您可以在代码隐藏中将其更改为<%# %>和DataBind,也可以创建链接标记runat="server",为其指定id并分配属性背后的代码。

请参阅this answer,其中详细介绍。

答案 1 :(得分:0)

使用此:

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

它对我有用:)

答案 2 :(得分: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";
}

答案 3 :(得分:-1)

如果你写完整行,你应该没事:

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

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