<head runat="server">
<title></title>
<script type="text/javascript" language="javascript"> function chkInAccount(source, args){
var out=document.getElementById('<%= ddlOutAccount.ClientID %>');
}这是部分代码片段。但我运行这个页面的话直接报错,连后台都不进。
错误如下:控件包含代码块(即 <% ... %>),因此无法修改控件集合。 解决方法已经找到了
1。<div runat="server" id="div1"> 放在这样的一个div里
2.<%= ddlOutAccount.ClientID %>改成<%# ddlOutAccount.ClientID %>我想请教的是,为什么=的表达式会报错,而#的就不会呢? 他们不是都是从服务器端读取数据么?
<%# %> 是数据绑定表达式,其中的格式为:
<%# DataBinder.Eval(Container.DataItem,"UserName") %> 其中UserName是要绑定的字段名。
<%# %> 是数据绑定表达式<head runat="server">
<title></title>
这是部分代码片段。但我运行这个页面的话直接报错,连后台都不进。
错误如下:控件包含代码块(即 <% ... %>),因此无法修改控件集合。 是因为你在代码中,修改header控件的值,比如说动态增加了一个meta,js,css的元素,所以会报错
一般解决就是把<%=获取服务端变量,调用服务端的方法,放到head下面去
如:<head runat="server">
<title></title>
</head>
<script type="text/javascript" language="javascript"> function chkInAccount(source, args){
var out=document.getElementById('<%= ddlOutAccount.ClientID %>');
}
我想请教的是,为什么=的表达式会报错,而#的就不会呢? 他们不是都是从服务器端读取数据么?
而不是问,什么是<%= %> 什么是<%# %>。也不是问如何解决报错问题。而是问为什么<%= %>会报错而<%# %>不报错
ddlOutAccount.ClientID 这个本身就是一个变量,即数据绑定;
----------------------------------
<%= ddlOutAccount.ClientID %>,这样写的话是错的,因为<%= %> 是赋值表达式,不能用于数据绑定。
而<%= %> 赋值,只能有一个值。
<%--使用<% %>的语法。并不返回一个字符串,它是直接把结果内容写入到输出流中。
如果是采用<%= %>的表达式的语法,Asp.net会计算该表达式的值,并把值的字符串结果直接在原位置输出。
而<%# %> 是数据绑定表达式
--%>
供参考
<%# %> 是数据绑定表达式,