为什幺服务器端button的客户端onclick事件不能直接在html代码中加 

<asp:Button id=”Button1”  Text=”Button” runat=”server”></asp:Button>
将改为
<asp:Button id=”Button1” onclick=”alert(‘ok’)” Text=”Button” runat=”server”></asp:Button>运行时就出错﹐我想请问为什幺?
谢绝告诉我 在c#代码里加 Button1.Attributes.Add("onlick","<script>alert('ok')</script>")可以达到效果﹐我只想知道为什幺服务器端button的客户端onclick事件不能直接加

解决方案 »

  1.   

    服务器端button没有   onclick这个事件
      

  2.   

    服务器端button没有   onclick这个客户事件
    他的OnClick 是对应服务端的onclick,回到*.cs里寻找这个事件
      

  3.   

    这里的onclick事件要写在的后台程序中。
      

  4.   

    你这是把2个问题扯在一起谈。
    1 onClick事件是可以放在服务器控件上的,不过那是在前台编码的情况下,
      由于后台编码提供了很好的代码分离,所以事件放在.cs里更合情合理。
    2  onclick=”alert(‘ok’)”,这个还是asp的习惯吧?
      

  5.   

    服务器端button没有   onclick这个客户事件
    他会自动找服务器上的
    解决方法,换成html button 加上 runat="server"
    就ok了
      

  6.   

    Button is displayed as <input type=submit>, it has a Click server event, and you use OnClick="HandlerName" to hook up with the server event handlerif you write OnClick="..", the system thought you were talking about the server event, but apparently "alert(...)" is not a server event handler name, so you have to use Button1.Attributes.Add("onlick",....)
      

  7.   

    服务器端button没有   onclick这个客户事件, 感覺沒有回答到點子上
    如﹕服务器端TextBox也沒有onmouseover這個客戶事件﹐但是可以<asp:TextBox id="TextBox1" onmouseover="over()" runat="server"></asp:TextBox>
    “over()”是自已寫 的javascript 函數,卻沒有問題
      

  8.   

    只能理解成和TextBox控件不一样了,其实WEB控件里BUTTON和以前ASP的<input type="submit">差不多啊,都是要提交到服务器端执行的
      

  9.   

    ASP.NET运行时在编译你的ASPX文件时,在分析一个TAG时,如果属性(Attribute)名与特性(Property)名相符,那么就会企图设置这些特性如果遇上不认识的属性(Attribute),会把它自动加到Attributes集合里去,显示到客户端去但遇上 On***时,ASP.NET会看该控件是否有对应的Event与***相符,如果有,就么把On***后面的值当作事件处理函数,如果找不到相应的Event,那么该属性就会输出到客户端去在Button的情形下,它有一个事件叫Click,所以ASP.NET看到你设置OnClick时,就以为你在设置服务器端的事件处理函数。所以如果你想设置客户端的OnClick,不能在TAG上设置
      

  10.   

    其实ASP.NET的服务器控件都是通过XML来解释的,根据XML的schema的定义规则,如果如属性或子元素不符合该complexElement的定义,就一定会作为一个非法的元素而禁止继续执行下去,它不像html一样只要符合基本的DOM模型就可以了,因此,由于TextBox控件在schema中的属性定义中没有onclick事件,ASP.NET当然就不会解释了,因为这意味着.net类里面的System.Web.UI.WebControls.TextBox这个类肯定也不存在该公开的property。
      

  11.   

    推翻我以上的部分回答,ASP.net的Button的onclick是对应了服务器端的onclick,而如果你没有声明该事件处理函数,就会出错.
      

  12.   

    Button1.Attributes.Add("onlick",....)
      

  13.   

    謝謝思歸 結貼
    請思歸再看一下
    http://community.csdn.net/Expert/topic/3382/3382132.xml?temp=.9286157