举个例子:
网页有个按钮btnOk(服务器控件),需要点此按钮的时候在客户端校验一些必要参数,然后提交服务器运行。
现在我问题是
1.我希望如果校验不同过,点此按钮以后不会执行服务器的btnOk_OnClick(),直接就在网页返回 ----如何做?
2. 如果校验通过,我希望根据实际结果调用服务器不同的方法,如何做?

解决方案 »

  1.   

    客户端:
    用服务器控件的OnClientClick属性
    如:OnClientClick="return Validate();"
    Validate()
    {
      var name=document.getElementById("txtName");
      if(name.value=="")
      {
         alert("不能为空");
         return false;
      }
      else 
      {
        return true;
      }
    }服务器端:protect void btnOk_OnClick(object sender,EventArgs e)
    {
       //如果js返回true 就会执行这里面的代码
    }
    ---不知这是否是你要的效果---
      

  2.   

    谢谢,有点类似
    不过有个问题:
    protect void btnOk_OnClick(object sender,EventArgs e) 

      //如果js返回true 就会执行这里面的代码 
    } 怎么判断js 返回的结果呢?
      

  3.   

    不用判断啊,只要是客户端正确返回true它才会执行按钮事件的服务端方法,你要判断js的返回结果那就直接在Validate函数里的做好了
      

  4.   

    如果那个Validate()函数返回true 系统会自动执行按钮的单击事件的服务器端方法,相反如果返回false则不会执行
      

  5.   


    ---------
    1楼的JS代码实际上就是检测的,如果不是真的话就不会提交到服务器.
    能执行到btnOk_OnClick(object sender,EventArgs e)这个事件,说明JS返回的就是真(当然也有可能是别人跳过了JS)另外:实际上你不用自己写JS判断.用验证控件就行了.
      

  6.   

    OnClientClick 事件好像是返回true才回执行OnClick事件
    所以用1楼的就行了
    如果你觉得不妥可以把值放进一个隐藏域里面然后在服务端取值判断
    就知道应该调用哪个方法啦