html,html服务器控件

原文: [/size]http://blog.csdn.net/kk5595/article/details/5280454
Asp.Net 不同区别的 OnClick ( onserverclick, onclientclick )


下面以 HTML的按钮( system.web.ui.htmlcontrols ) 和 ASP.NET服务端按钮 ( system.web.ui.webcontrols ) 为例:
1. HTML控件,如IMG的输入按钮等 的 onclick ( 客户端 )和 onserverclick ( 服务端 )事件,注意 runat="server"。。。


此处的onclick先于onserverclick执行。
2.WEB控件,如<asp:button 按钮等 的 onclientclick( 客户端 ) 和 onclick ( 服务端 )事件。。。


此处的onclientclick先于onclick执行。
onclientclick   事件来自2.0, 它用来取代下列代码。。。


总之,客户端点击事件先于服务器端点击事件执行。也就是说,先执行客户端的Javascript,然后到服务器端执行服务器的相关代码。



附:html控件、html服务器控件和web用户控件
asp.net之所以现在开发方便和快捷,关键是它有一组强大的控件库,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等。这里主要说说html控件、html服务器控件和web服务器控件的区别。
    1、html控件:就是我们通常的说的html语言标记,这些语言标记在已往的静态页面和其他网页里存在,不能在服务器端控制的,只能在客户端通过 javascript和vbscript等程序语言来控制。<input type="button" id="btn" value="button"/>
    2、html服务器控件:其实就是html控件的基础上加上runat="server"所构成的控件.它们的注意区别是运行方式不同,html控件运行 在客户端,而html服务器控件是运行在服务器端的。参考其他资料是这样说的: 当ASP.NET 网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html标注就会被视为字符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释;如果Html标注有设定 runat="server" 属性,Page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器控件的执行结果转换成Html标注,然后当成字符串流 发送到客户端进行解释<input id="Button" type="button" value="button" runat="server" />
    3、web服务器控件:也称asp.net服务器控件,是Web Form编程的基本元素,也是asp.net所特有的。它会按照client的情况产生一个或者多个html控件,而不是直接描述html元素。如: <asp:Button ID="Button2" runat="server" Text="Button"/>那么它和html服务器控件有什么区别呢?参照其他网页的资料看法如下:
    1)、Asp.net服务器控件提供更加统一的编程接口,如每个Asp.net服务器控件都有Text属性。
    2)、隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备。
    3)、Asp.net服务器控件可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。
    4)、事件处理模型不同,Html标注和Html服务器控件的事件处理都是在客户端的页面上,而Asp.net服务器控件则是在服务器上,举例来说:
    <input id="Button4" type="button" value="button" runat="server"/>是Html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。
    <input id="Button4" type="button" value="button" runat="server" onserverclick="test" />我们为Html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。
    <asp:Button ID="Button2" runat="server" Text="Button" />是Asp.net服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。
    由此可见:Html标注和Html服务器控件的事件是由页面来触发的,而Asp.net服务器控件则是由页面把Form发回到服务器端,由服务器来处理。


本来对html控件,服务器控件的知识模模糊糊的。今天特地查了相关的知识。


下面是我写代码总结的。

这些事件   主要用于在客户端执行验证,然后决定是否执行服务端事件   (没接触之前就为此纳闷呢,now豁然开朗)

假设:若输入框里的  字符长度  >1   and  <5 的话,就会执行服务器端的代码。

js:
       <script type="text/script">
        function abc()
         {
              var len=document.getElementById("text").value;             //得到text里的值
               if(a.length>1 && a.length<5)
                 return ture;
              else
               {
                 alert('长度必须大于1小于5');
                 return fasle;
               }

        }
      </script>


1.   onclick   ,onclientclick  事件 使用  (html控件定义为 runat='server'使用)



如:  <input type="button" onclick="javascript:if(abc())" onserverclick="后台事件" runat="server" />

   注意 :   onclick 里的写法      javascript:if(abc())      结束时候无分号 .


2.  onclick   ,onclientclick  事件

    <asp:button        id="bt"   onclick="bt_click "  onclientclick="return abc() ;"   runat="server">             //  renturn  true  则执行 服务端事件;否则
                                                                                                                                         不执行

3.
后台pageload 方法中添加 前台的onclick 事件

protected void Page_Load(object sender, EventArgs e)
    {
        btt.Attributes.Add("onclick", "javascript:if(document.getElementById('text').value.length>5);else {alert('length小于5了');return false;}");
    }

你可能感兴趣的:(html)