JavaScript與 ASP.NET互動
寫網頁程式一定避不了JavaScript。
前端的 JS怎麼跟後端的 ASP.NET合作呢?從傳遞數值說起,JS要抓到值的前提是,資料真的有傳到瀏覽器上…先看看原始碼有沒有想抓的東西,再藉著 DOM模型提供的方法來讀取資料;後端就簡單多了,元件只要設定 runat=server就抓的到,點的出來。
然後是事件,其實都要由前端 JS觸發。每個 .aspx頁面都會有一個 __doPostBack函式,該函式負責 submit form,定義如下:
01 function __doPostBack(eventTarget, eventArgument) {
02 var theform;
03 if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
04 theform = document.formId;
05 }
06 else {
07 theform = document.forms["formId"];
08 }
09 theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
10 theform.__EVENTARGUMENT.value = eventArgument;
11 theform.submit();
12 }
02 var theform;
03 if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
04 theform = document.formId;
05 }
06 else {
07 theform = document.forms["formId"];
08 }
09 theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
10 theform.__EVENTARGUMENT.value = eventArgument;
11 theform.submit();
12 }
… 其實我只是做個筆記,不用仔細瞭解它在做什麼。
如果有個伺服器物件 TextBox.id=tb1,在後端有 TextChanged事件,那麼可以在 JS中用 __doPostBack("tb1","")來觸發後端的 TextChanged事件,甚至可在 JS中用 button1.onclick來觸發後端tb1.TextChanged事件;後端呼叫前端最簡單的就是 Response.Write(""),再不然 Page.Register...忘了函式名稱,有方便的 IDE就會讓人變的愈來愈懶 XD