李志剛
【摘要】ASP.NET程序設(shè)計(jì)的教學(xué)過程中學(xué)生存在前導(dǎo)課程沒有學(xué)好,不會頁面?zhèn)髦担侄卧O(shè)置不合理等問題。筆者針對這些問題給出了建議。
【關(guān)鍵詞】頁面?zhèn)髦? Command? DataSet
一、問題
隨著時代的發(fā)展,軟件技術(shù)專業(yè)發(fā)展越來越快,ASP.NET程序設(shè)計(jì)是軟件技術(shù)的一門核心的專業(yè)課,但在教學(xué)過程中學(xué)生存在較大的問題,主要問題如下:
(1)ASP.NET程序設(shè)計(jì)的前導(dǎo)過程是C#程序設(shè)計(jì)和數(shù)據(jù)庫,很多學(xué)生基本的SQL都不會寫,C#中類,對象,多態(tài),封裝等概念理解不清晰。
(2)對單選按鈕的使用掌握不太好,如設(shè)計(jì)一個性別的兩個單選框,發(fā)現(xiàn)男和女都可以選擇。
(3)對下拉框的級聯(lián)不知道如何實(shí)現(xiàn),如學(xué)院,專業(yè),班級之間的級聯(lián)。
(4)對如何進(jìn)行頁面?zhèn)髦嫡莆詹惶茫旧嫌龅巾撁鎮(zhèn)髦稻陀肧ession,對Session的不足也不太清楚,只知道Cookie有安全問題。
(5)對六種數(shù)據(jù)驗(yàn)證控件的應(yīng)用掌握不好,不知道驗(yàn)證控件如何選擇,如要求用戶名是6-16位的字母數(shù)字結(jié)合,郵箱不知道用什么驗(yàn)證控件。
(6)Command對象有ExecuteScaler(),ExecuteReader(),ExecuteNonQuery()不知道如何去選擇和使用。
(7)Command對象和DataSet對象都可以進(jìn)行數(shù)據(jù)的增加刪除修改,不知道該如何選擇。
(8)界面設(shè)計(jì)不好看。
針對以上問題,我認(rèn)為應(yīng)采取以下措施:
(1)復(fù)習(xí)數(shù)據(jù)庫和C#的基礎(chǔ)知識,掌握基本的SQL語句的書寫,包括增加刪除修改查詢特別是多條件查詢和模糊查詢;理解類和對象的關(guān)系,知道如何去創(chuàng)建一個對象,如何調(diào)用對象的屬性和方法。
(2)對于多個單選按鈕,一定要設(shè)置groupname的值,如頁面只有性別的兩個單選按鈕,可以把這兩個單選按鈕的groupname的值設(shè)置成一樣的。如果頁面有多組單選按鈕,如性別和最喜歡的顏色,需要把兩組單選按鈕的groupname設(shè)計(jì)成不同的值。
(3)實(shí)現(xiàn)下拉框的級聯(lián)首先要設(shè)計(jì)數(shù)據(jù)表,如要實(shí)現(xiàn)學(xué)院專業(yè)班級的級聯(lián),需要設(shè)計(jì)學(xué)院代碼表,專業(yè)代碼表和班級代碼表,其中學(xué)院代碼表中包括學(xué)院id,學(xué)院名稱;專業(yè)代碼表包括專業(yè)id,專業(yè)名稱和所屬學(xué)院id;班級代碼表包括班級id,班級名稱和所屬專業(yè)id。用學(xué)院代碼表填充學(xué)院下拉框,第二個下拉框根 據(jù)第一個下拉框的學(xué)院id的值在專業(yè)代碼表中查找相關(guān)專業(yè)第二個下拉框根據(jù)第二個下拉框的專業(yè)id在班級代碼表中查找相關(guān)班級。
(4)頁面?zhèn)髦涤形宸N:QueryString,Session,Cookie,Application,Server.Transfer。其中QueryString是最簡單的頁面?zhèn)髦?,適合傳一些不重要的簡單的值,如編號,它會把傳的值放在ie地址欄上,有一定的安全隱患難。Server.Transfer用法和QueryString使用方法類似,但ie地址欄還人顯示原來頁面的地址,對用戶不太方便。Session是使用最多的頁面?zhèn)髦?,但過多的使用Session會消耗較多的服務(wù)器資源。Application是全局變量,在使用前要加鎖,使用完后要解鎖,一般用于統(tǒng)計(jì)網(wǎng)站的訪問人數(shù)。Cookie是儲存在客戶端的,如常用的記住帳號密碼就是用的Cookie。
(5)驗(yàn)證控件有六種:非空驗(yàn)證,范圍驗(yàn)證,比較驗(yàn)證,正則表達(dá)式驗(yàn)證,用戶自定義驗(yàn)證和驗(yàn)證匯總。非空驗(yàn)證是驗(yàn)證必填項(xiàng),如用戶名,密碼;范圍驗(yàn)證是驗(yàn)證數(shù)據(jù)是否在一定的范圍內(nèi),如年齡應(yīng)該在0-100歲之間;比較驗(yàn)證一般用于密碼和確認(rèn)密碼的驗(yàn)證;正則表達(dá)式驗(yàn)證應(yīng)用較廣,如郵箱、手機(jī)號、ip地址、用戶名,如用戶名要求以字母或下劃線開頭,后面緊跟著字母、數(shù)學(xué),長度為6-16位;用戶自定義驗(yàn)證一般用于自己設(shè)定的規(guī)則,包括用戶名不能重復(fù),要輸入一奇數(shù)。驗(yàn)證匯總是把所有的驗(yàn)證結(jié)果匯總在一起顯示,包括摘要形式和彈出對話框的形式。
(6)command對象有ExecuteScaler(),ExecuteReader(),ExecuteNonQuery()三個方法。ExecuteScaler()是返回首行首行,適合于和sql語句中的聚和函數(shù)一起使用,如查詢用戶密碼是否存在,可以用count(*)來實(shí)現(xiàn);找同最高單價(jià)可以用max(price)來實(shí)現(xiàn)。ExecuteReader()返回的是只讀對象,可以進(jìn)行查詢數(shù)據(jù)是否存在和讀取數(shù)據(jù)庫中的數(shù)據(jù),如根據(jù)用戶名和密碼查詢角色字段。ExecuteScaler()是返回影響的行數(shù),對于查詢來說,不管是否查詢到數(shù)據(jù),ExecuteScaler()返回值都是-1,它適合于增刪改。所以,如果只需要查詢數(shù)據(jù)是否存在,用ExecuteScaler()比較方便,如果要取數(shù)據(jù)庫中的數(shù)據(jù),需要用ExecuteReader(),如果是增加刪除修改那么需要用ExecuteNonQuery()。
(7)DataSet和DataAdapter也可以進(jìn)行數(shù)據(jù)的增加刪除修改刪除,它在對數(shù)據(jù)進(jìn)行操作時不需要去打開和關(guān)閉數(shù)據(jù)庫連接,但用它來進(jìn)行數(shù)據(jù)的增加,需要先新建一個數(shù)據(jù)行,然后再給每一列數(shù)據(jù)進(jìn)行賦值;它進(jìn)行數(shù)據(jù)更新時,首先要取到需要更新的那一行,然后再對每個字段進(jìn)行修改;它進(jìn)行數(shù)據(jù)刪除的時候,首先取到要刪除的那一行,直接刪除數(shù)據(jù)行就行;因?yàn)橛盟M(jìn)行數(shù)據(jù)增刪改的時候,代碼量會比較大,所以DataSet一般用于查詢數(shù)據(jù)是否存在,讀取數(shù)據(jù)和顯示數(shù)據(jù)。
(8)對于界面不好看的問題,需要復(fù)習(xí)以前學(xué)過的HTML,CSS和JS,還可以參考現(xiàn)有的網(wǎng)站,看它們有哪些可取之處。