因为imagebutton有提交(submit)的作用。所以必须放在form里面。

解决方案 »

  1.   

    如何控制按enter後一個form中的兩個imagebutton哪一個先激活?
      

  2.   

    你們沒有碰到過這種情況嗎?因在web form 中只能有一個form是runat server的,那如果有兩個以上的server控件,它們的提交順序如何控制?
      

  3.   

    tabindex也有問題,因如果form中有一個是user control的話,它是沒有tabindex的,而且很奇怪的是form會先提交這個user control
      

  4.   

    “為什麼像datalist等server control不用放在form runat=server中”谁告诉你的所有的服务器端控件都需要放在Runat=Server的Form中“因在web form 中只能有一個form是runat server的,那如果有兩個以上的server控件,它們的提交順序如何控制?”Form的提交不是一次提交一个控件,而是一次性把所有Form中控件的值都提交到服务器,服务器端可以通过Request.Params集合访问到提交的数据ASP.Net页框架会从ViewState中恢复控件上一次的值,如果控件的值被提交了,则如果这个控件实现了回发数据的接口IPostBackDataEventHandler,则页框架会负责把对应该服务器控件的提交的值传递给它用来更新服务器端控件的状态,ASP.Net标准的控件,如TextBox等等都实现了这个接口
      

  5.   

    Http协议中,如果Form是Post方式提交,则控件的值会在请求的Content当中发送到服务器,如果是Get方式,则会加到请求的Head部分
    这个是由ASP.Net页框架进行处理的,当然你手动也可以从请求中获取Form提交的值一个ASPX中只能有一个Runat=Server的Form,是由于ViewState的实现问题,ViewState是一个Hidden的字段,这个字段只能被本身的页所解析,所以把Runat=Server的Form提交到别的页面会出现ViewState损坏的错误tabindex可以用Html的属性来做到
      

  6.   

    to tim:
    為什麼像datalist等server control不用放在form runat=server中這個範例确實是有的,還能運行,是IBUYSPY中_menu.ascx中的datalist,它把這個放在register.aspx中時,是未包含在<form runat=server></form>中的,但在我的ascx中有一個image button就不行了.關于Form的提交不是一次提交一个控件,而是一次性把所有Form中控件的值都提交到服务器,服务器端可以通过Request.Params集合访问到提交的数据我是這個意思,我在form中有幾個textbox和兩個imagebutton,一個是在ascx中的,一個是在webform中的,但是按了enter後form就會提交,但只會執行ascx中的imagebutton的click代碼,我想按enter後執行webform中的imagebutton的click代碼.請老兄指教