我正在尝试使用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>
这不能正常扩展的原因是什么?
答案 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。我的语法可能不完全正确,提前抱歉。