[ASP.NET]Client?Server?一定要分清楚

[ASP.NET]Client?Server?一定要分清楚

還記得之前我有寫過一篇[ASP.NET]新手必讀-Client/Server code的差別,主要是要來解釋一下ASP.NET中Client/Server程式上的分野,結果今天又有人問了我一個很像的問題,問題大致如下:

image

看到這個問題我也不禁想問,為什麼不可以呢?鄉親阿,哩功跨買...

 

這是非常典型的不熟悉Client/Server程式分野的人常犯的錯誤,以下幾個重點提醒:

1.寫在xxx.cs檔中的程式不一定就會跑後端程式

2.寫在xxx.aspx中的程式不一定就會跑前端程式

3.透過以下幾種方式註冊的,一般來說跑的是前端程式

《xxx.cs》

《xxx.aspx》

OnClientClick是.net 2.0之後提供的屬性:

4.透過屬性視窗的image 方式註冊的,就是後端程式

這會對應到後端的protected void TextBox1_TextChanged(object sender, EventArgs e)事件。

image

5.透過在aspx中自己增加屬性的方式,跑的也是後端程式

OnTextChanged這個事件,會執行後端的TextBox1_TextChanged事件:

6.透過以下方式註冊EventHandler的跑的是後端程式

其中的Mail_Click function是後端的function

我們看一下在aspx中選擇OnClick跟OnClientClick兩個前面的圖示有什麼不同,OnClick是Event,OnClientClick是屬性,兩個是不同的喔:

image 

 

一般來說,切分前後端程式的常見方式大致如上,千萬不要搞錯了,否則你肯定會把一些正常的現象當成異常了,附帶一提,如果我在一個元件中同時註冊了前端的程式與後端的程式,那會跑哪一個?

從以上的案例來說,是兩個都會跑,先執行完前端程式,再跑後端程式,那如果我希望在某些情況下跑完前端程式不要執行後端程式怎麼辦?只要寫return false;就可以了,以下範例當跳出確認窗後,如果按下取消,就不會執行Button1_Click的後端事件,反之則會,重點就在return false;

以上觀念,不分清楚可不行。

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。