国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET學習總結

2024-07-10 13:07:05
字體:
來源:轉載
供稿:網友


一、asp.net頁面的處理順序

  asp.net頁面是由事件來驅動的,首先執行的是init事件,在代碼中,系統自動增加了一個oninit的重載函數,從而在頁面init的時候就執行這個oninit函數。在這個函數中,會執行initializecomponent函數,這個函數里就有很多控件事件的代理函數,展開一個頁面的"web formdesigner generated code",我們就可以看見這些。

  頁面在執行完init之后,就是load事件,對應的代碼就是page_load。
  然后就是引起頁面返回的事件的代碼,當然,如果頁面是第一次運行的話,就沒有這一步了。
  也就是說,頁面每次刷新的時候都會執行page_load函數,這也就是為什么有些代碼要寫在
    if (!page.ispostback)
    { ... }
  中的原因。比如有一個文本框,如果在page_load中設置初始值,放在哪兒呢?如果放在if外面,那每次刷新的時候都會執行這個賦值語句,即使在頁面中修改了文本框的值,在返回之后仍然會消失,但是如果放在if之中,那就可以了,返回之后文本框中仍然是先前的值。
  很多朋友的datagrid無法獲取編輯后的值,也可能就是這個原因。

二、javascript在頁面中的應用

  雖然asp.net采用新的運行機制,但是最后生成的還是能被一般瀏覽器識別的html和javascript代碼。

  在頁面中,仍然可以通過response.write來寫出一段js代碼,比如要彈出一個新的瀏覽器窗口,可以用response.write(@"<script language=javascript>window.open('url');</script>");

  在web控件中,attributes屬性集合也和js聯系緊密。新增加的一個attributes元素就對應web控件最后生成的html代碼的一個屬性或者事件。

  比如有一個textbox,要求我們在它獲得焦點的時候選中全部的文本,我們就可以這樣處理:textbox1.attributes["onfocus"]="javascript:this.select();";通過在ie中查看頁面的源代碼,我們可以看到這樣的一段:<input type=textonfocus="javascript:this.select();"...>,至于是什么意思就不用我解釋了吧。

  另外還有一個應用,如果有一個button,它的click事件中有很多對數據庫的一些操作,我們要求用戶在按了這個button之后確認一次(這有點想asp中的msgbox),現在我們就可以這樣處理:button1.attributes["onclick"]="javascript:return confirm('are your
sure...');";最后的效果如我們想像。

  注:以上代碼在codebehind中運行通過。至于代碼與頁面混在一起的情況,在書寫的時候可能會有所不同。

三、關于代碼重用

  asp.net已經基本轉向了oo的層面上來,其中的代碼基本都是通過類來執行的。就像我們寫c/s系統一樣,用一個或者多個class來保存公用的函數,然后再在其他函數中調用。

  還有一個方法就是寫到一個基類里,其他類繼承這個基類。至于用那種方法,那看個人愛好以及函數的處理范圍。

  我前段事件做的一個項目是這樣做的,有兩個基類,一個是中間層的基類,一個是頁面class的基類(繼承system.web.ui.page)。然后把一些數據庫的處理放到前一個基類里,把頁面控件的一些常用操作放到后一個基類里。

四、web控件

  有幾個控件是我們應該有很深的理解的:datagrid、datalist。這兩個控件在顯示數據上為我們提供了極大的方便,它們的各種用法,需要我們在實踐中不斷摸索、不斷總結。

  另外,自定義控件也是一個比較重要的范圍。

  在自定義控件的類型選擇上,如果你只是一般的顯示一些固有的控件,而不作屬性、事件的操作,那寫成usercontrol會簡單一點,這樣的自定義控件相當于asp中通過include執行的代碼。如果你想在設計、運行中修改控件內部的屬性、得到控件的某些事件,那最好寫成一個dll文件,也就是寫成一個類,這樣的控件可以像一般的web控件一樣,用鼠標拖動大小,設置屬性,獲取事件等。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镶黄旗| 靖西县| 梅州市| 监利县| 百色市| 军事| 塘沽区| 龙岩市| 香港 | 水富县| 古丈县| 喀喇| 松溪县| 南乐县| 六安市| 惠安县| 高平市| 醴陵市| 彰化县| 德昌县| 衡阳市| 高阳县| 洛宁县| 尼勒克县| 桂林市| 肇州县| 赤壁市| 黔东| 土默特右旗| 迭部县| 赞皇县| 清河县| 峨山| 六盘水市| 革吉县| 金沙县| 临沭县| 陆良县| 辛集市| 苍南县| 廉江市|