导航
  • 主页
  • .NET Framework
  • ASP
  • Web Services
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ
  • VC
  • 问答

在<head runat="server"></head>中使用<%=%>出错

路人甲cw 2011-04-14 01:15:18
如题,运行时提示:
控件包含代码块(即 <% ... %>),因此无法修改控件集合
...全文
218 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人甲cw 2011-04-14
[Quote=引用 11 楼 dalmeeme 的回复:]

我在自己的机器上试过了,没问题,看来是其他问题。
HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h……
[/Quote]
嗯,这样确实是没有问题,但如果使用EXT.NET控件之后,<%%>就不能写在Head里的<script>里面了,不知道为啥
回复
dalmeeme 2011-04-14
我在自己的机器上试过了,没问题,看来是其他问题。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
alert("<%=TextBox1.ClientID %>");
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="div1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
回复
路人甲cw 2011-04-14
[Quote=引用 9 楼 dalmeeme 的回复:]

去掉<head runat="server">中的runat="server",使其不成为控件。
[/Quote]
试过,无效
回复
dalmeeme 2011-04-14
去掉<head runat="server">中的runat="server",使其不成为控件。
回复
路人甲cw 2011-04-14
[Quote=引用 7 楼 mockqi 的回复:]

不知道,用jquery的路过
[/Quote]
在这种情况无论是JQ还是JS使用<%%>语法都会异常
回复
不知道,用jquery的路过
回复
路人甲cw 2011-04-14
不好意思,我没把问题讲清楚,我干脆把例子代码拷过来吧:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="YBXB.WebForm1" %>
<%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
alert("<%=TextBox1.ClientID %>");
</script>
</head>
<body>

<%--<ext:ResourceManager ID="ResourceManager1" runat="server" />--%> //注释

<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<%--<ext:Label ID="Label1" runat="server"> //注释
</ext:Label>--%>

</div>
</form>
</body>
</html>



如上面的aspx页面代码,如果我把注释取消,运行就会异常:

控件包含代码块(即 <% ... %>),因此无法修改控件集合。
堆栈跟踪:
[HttpException (0x80004005): 控件包含代码块(即 <% ... %>),因此无法修改控件集合。]
System.Web.UI.ControlCollection.AddAt(Int32 index, Control child) +8689838
Ext.Net.ResourceManager.Page_PreRenderComplete(Object sender, EventArgs e) +231
System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +8872170
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

但如果不取消注释的部分就不会报异常,不知道是咋会事,有人用EXT.NET遇到这样的问题吗?当然使用LS朋友的方式,将含有<%%>部分的JS代码放到<body></body>中就不会出问题了,但是为什么不使用EXT.NET控件时不需要这样做呢?是内部机制所致?
回复
CtrlJava 2011-04-14
<%= 方法名 %>
回复
gdjlc 2011-04-14
是写JS脚本吧?把这段包括<%=%>的JS放到</head>外面,如</body>下面。。。
回复
蓝小修 2011-04-14
如果是类似于DataList绑定数据的话,应该是<%# Eval("名字")%>

如果是直接绑定后置代码中的方法,则是<%= 方法名 %>

希望对你有帮助
回复
<%# XXX %>
回复
子夜__ 2011-04-14
图挂了
参考
回复
发动态
发帖子
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
社区公告
暂无公告