我用js代码ajax去异步读取某张页面的内容,碰到几个问题,首先,假如页面中有<form runat=server>表单的,就无法读取数据出错了,加了 protected override void Render(HtmlTextWriter writer) 方法就可以了,但是数据绑定显示空间DataList1.RenderControl(writer);是可以执行的,为什么textbox1..RenderControl(writer)就不行,这个render到底起了什么作用,一定要用这个render吗?请帮忙!

解决方案 »

  1.   

    数据究竟怎么样出错?Render()
    在内部会根据浏览器发来的header头里的各种标准/规范以及浏览器版本来输出不同的数据
    以兼容各种浏览器.你用ajax时,在request.header中肯定没有设置具体的内容.
      

  2.   

    Render,中文来说就是渲染,作用是把server端控件转化成html控件。比如:asp:Textbox经过Render到客户端就成了<input type="text".../>
          asp:Button经过Render到客户端就成了<input type="button".../>你的问题到底是遇到了什么异常,把异常发出来看看
      

  3.   

    textbox1..RenderControl(writer)多了个点吧
      

  4.   

      protected override void Render(HtmlTextWriter writer)
        {
            
            DataList1.RenderControl(writer);
            this.Literal1.RenderControl(writer);
            this.TextBox1.RenderControl(writer);//加了这行就出错了,不加的话上面都能正确在另外一张页面中输出的
        }
    加了最后的 this.TextBox1.RenderControl(writer);这行就出错了,不加的话上面都能正确在另外一张页面中输出的
    异常显示:类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内。问题是我明明放在 runat=server 中,
    TextBox和Literal1等有什么区别吗?
      

  5.   

    Render就是服务端往浏览器呈现HTML的过程。