zoukankan      html  css  js  c++  java
  • 让服务器端控件同时执行客户端脚本和服务器端代码

    让服务器控件的事件同时执行客户端脚本和服务器端代码
        问题:
            有时候我们需要一个服务器控件同时执行客户端脚本(如javascript)和服务器端代码。比如在进行表单验证的时候,希望先在客户端进行验证,只有通过验证才执行后台代码。这样可以避免不必要的postback,提供更好的用户体验。
        解决方案:
            在不同的地方分别注册客户端和服务器端事件处理函数。示例如下:
        Web页面代码(仅HTML部分):
        <HTML>
            
    <HEAD>
                
    <title>DoubleSidesHandler</title>
                
    <script language="javascript">
                    
    function submitClientHandler()
                    {
                        
    var len = document.form1.txtName.value.length;
                        
    if(len < 3)
                        {
                            window.alert(
    "required at least 3 letters!");
                            
    return false;
                        }
                        window.alert(document.form1.txtName.value);
                        
    return true;
                    }
                    
                    
    function initHandler()
                    {
                        
    var elem = document.form1.btnSubmit;
                        
    if(elem)
                        {
                            elem.onclick 
    = submitClientHandler;
                        }
                    }
                
    </script>
            
    </HEAD>
            
    <body onload="initHandler()">
                
    <form id="form1" method="post" runat="server">
                    Enter your name:
                    
    <asp:TextBox ID="txtName" Width="200px" Runat="server"></asp:TextBox>
                    
    <br>
                    
    <asp:Button ID="btnSubmit" Text="Submit" Runat="server" OnClick="SubmitServerHandler"></asp:Button>
                
    </form>
            
    </body>
        
    </HTML>

         后台代码(仅事件处理函数):
         
         protected void SubmitServerHandler(object sender, System.EventArgs e)
         {
            Response.Write(
    "hello!" + txtName.Text + "<br>");
         }

         分析:
         这里客户端和服务器端的事件处理函数分别是submitClientHandler()和SubmitServerHandler()。submitClientHandler()在页面加载完成时(onload事件中)注册,这时才能获得对服务器控件的引用。SubmitServerHandler()在Button控件的OnClick属性中注册,这里注意该方法须声明为protected以上级别,这样才能在页面中访问。完成这两步注册后,页面会先后执行客户端和服务器端时间处理函数。

         那么,怎么才能控制对服务器端代码的调用?看
    submitClientHandler()函数,如果返回false,那么就不执行SubmitServerHandler(),如果返回true,就会继续调用SubmitServerHandler()。

    作者:Anders Cui
    出处:http://anderslly.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    C#中remoting和webservice的区别
    Nhibernate了解(转载)
    深入浅出JSON
    Asp.net页面传值总结(转载)
    .Net ViewState的实现(转载)
    asp.net数据绑定之Eval和Bind区别
    PetShop数据库解读
    .Net 2.0 缓存使用(转载)
    ASP.NET中EVAL用法大全
    a:hover和a:visited书写顺序的重要性
  • 原文地址:https://www.cnblogs.com/anderslly/p/doublesidesevent.html
Copyright © 2011-2022 走看看