请问为什么在vs2005中在javascript方法中用'<%=%>',会出现‘控件包含代码块(即 <% ... %>),因此无法修改控件集合。’,还有页面写一个
<script type="text/javascript">
<!--
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>
为什么不会执行__doPostBack方法里面的内容了?
这些方法操作,在vs2003中都可以用,但是在2005里面却不行,请问在2005中倒底可不可以用?要怎么样用?

解决方案 »

  1.   

    javascript方法中用'<%=%>' 我用2005没有问题.第二个问题.也试过了,可postback.
      

  2.   

    <head runat=server
    是不是阿?
    是就去掉runat=server
      

  3.   

    请问为什么在vs2005中在javascript方法中用'<%=%>',会出现‘控件包含代码块(即 <% ... %>),因此无法修改控件集合。’
      我在2005没有问题,倒是在2003有这个问题
    第二个问题不是很清楚
      

  4.   

    我的意思是,我点击一个服务器控件时,回传页面的时候会去调用__doPostBack这个文件,但是在VS2005好像没有去调这个方法?
      

  5.   

    如果是Button是不调用__doPostBack方法的哦,它被转化为 submit HTML控件。
      

  6.   

    楼上说的对,只有非button控件才会调用这个 __doPostBack方法,比如你点击一个dropdownlist
    ,如果是autopostback的,就会调用__doPostBack方法
      

  7.   

    如果是静态的脚本,你可以直接在aspx写<script />。但如果涉及动态内容的脚本,建议你先在cs里拼接好再用Page.ClientScript.Register*系列的函数来注册脚本。详细用法你在MSDN里查阅Page.ClientScript对象就知道了。当然,在cs中出现大段的js是不好的,所以改进的方法就是将js模板保存在资源文件中,需要的时候将它读取出来,然后用string.Format之类的方法填充模板(而不是拼接),最后注册到页面上。