onclientclick和onclick區別


OnClientClick是客戶端腳本,一般使用javascript,在客戶端,也就是IE中運行,點擊后馬上執行
OnClick是服務器端事件處理函數,使用C#或者vb.net,在服務器端,也就是IIS中運行,點擊按鈕后,執行postback,之后再運行。

 

其實有的時候需要客戶端和服務端雙重校驗,為什么這么說呢? 比果說,一個用戶名的文本框,在客戶端我們通過JS校驗,只能輸入字母和數字,不能有特殊字符!通常情況下是沒有問題的,但是總有那么一丟丟人想方設法的去“搞破壞” ,這個時候就需要進行雙重校驗了!說白了,就是服務端和客戶端都進么校驗!

比如說:Button有:OnClick事件和OnClientClick屬性,前者一般就是服務端的點擊事件!后者則是客戶端的點擊事件!

我們來做一個測試!在Default.aspx頁面中添加如下代碼!

 

復制代碼
    <script language="javascript" type="text/javascript">
        function buttonClick() {
            alert("我是客戶端點擊事件");
            return false;     
        }

     </script> 

復制代碼

頁面代碼:

復制代碼
 <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="些Button是服務端控件,默認使用OnClientClick事件,請禁用瀏覽器的Js功能體驗"
            OnClick="Button1_Click" OnClientClick="return buttonClick();" />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    </div>

   </form> 

復制代碼

cs文件代碼:

protected void Button1_Click(object sender, EventArgs e)
{
    this.Label1.Text = "我是服務端點擊事件";

 

大家運行看看是什么效果?  你可能會發現,只彈出了JS中的代碼! 沒錯,這正是我們想要的效果,通過return false 來"屏蔽"服務端的校驗!好處是什么? 就是不用刷新頁面呀!

你再把瀏覽器的腳本功能禁用了,你再試一試,看看又是什么效果?

呵呵,通過又重校驗就能確保用戶的非法錄入,這正是我們想要的結果! 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM