欧美国产日韩精品-欧美国产日韩久久久-欧美国产日韩一区二区三区-欧美国产日韩在线-台湾毛片-台湾美女古装一级毛片

探析ASP.Net程序構架與程序代碼分離技巧

來源:期刊VIP網所屬分類:計算機網絡時間:瀏覽:

  為了便于理解,這里設計的頁面比較簡單,頁面分為三個主要的部分,頭部包含一個AdRotator控件(用于顯示廣告)與一個Label控件(用于顯示當前廣告鏈接地址);中部是一個登陸頁面,包括兩個TextBox控件(分別用于輸入用戶名與密碼)、一個Label控件(顯示登陸是否成功)與一個Button控件(作為提交按鈕);底部包含兩個Label控件(分別顯示當前用戶名與用戶權限)。

  一年前,當本人拿到一個名叫TWIG的PHP程序時,立即被作者OOP編程思想所折服,很難想像TWIG中所有的功能(行事歷、郵件、個性化)均在一個PHP文件(index.php3)中執行完成,這就得益于作者采用了程序代碼與頁面構架分離的思想,但是我也看到盡管作者做了很大的努力,但由于PHP的局限性,程序并沒有真正做到代碼與構架的分離,index.php3這個主文件由于要執行的功能太多,所以其require的模塊文件相當之多,至使整個文件依然顯得十分零亂,本人愚昧,當時花了半個月的時間,才真正明白程序的構架,分析代碼之苦,無人能知啊(黯然淚下......)。

  TWIG程序對我此后的編程有著很大的影響,但是即使這樣的作品,依然沒有擺脫程序代碼與HTML代碼混雜的局面。

  程序代碼與頁面構架的分離是WEB程序員多年的夢想。在ASP.Net出現之前,無論是ASP、PHP還是JSP,程序代碼與HTML代碼都是混雜在一起的,這種做法,雖然在WEB技術初期受到贊揚,但是隨著時間的的推移,它的弊端是越來越明顯,當程序代碼很長時,HTML代碼與其混雜,程序的可讀性變得很差,讓人無法分清程序真正要表示的頁面構架。

  而新技術ASP.Net則通過Codebehind、用戶控件(User Control)以及自定義控件(Custom Control)等方法真正做到了代碼的分離。這是一個了不起的進步,大家可以在本文中看到分離代碼后的ASP.Net程序的結構是多么的清晰。

  熟悉ASP.Net的朋友,馬上就會意識到頭部由于使用了AdRotator控件,所以必定存在OnAdCreated事件以便在Label控件顯示相應鏈接;而中部由于使用Button控件做為提交按鈕,所以必定有一個OnClick事件處理。

  1 CodeBehind

  首先我們就看看如何使用CodeBehind方法來實現代碼與頁面構架的分離,下面給出的源程序是主ASP.Net程序--Example1.aspx:

  當前廣告鏈接:

  登陸窗口

  用戶名:

  密碼:

  用戶名:

  權限:

  例程中,大家可以清楚地看到程序中不包含任何C#、VB、JavaScript來處理OnAdCreated與OnClick事件,但是執行本程序,程序能夠正常使用(如圖2-1與圖2-2)。這便是使用CodeBehinde的結果,事件處理已經被轉移到其它程序中定義執行。請大家注意本例中第一行的信息:

  一般在ASP.Net程序中,Page指令都在設定本程序應當使用什么語言(使用Language屬性),而本例中沒有出現Language屬性,而是出現了兩個新的Page屬性:Src與Inherits。Src屬性設定事件處理真正的代碼位置,Inherits屬性則設定需要引入的類名。可以看到本例中定義事件處理的文件是EventHandle.cs,我們來看看它的具體內容: using System;

  using System.Data;

  using System.Data.SqlClient;

  using System.Web;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.Web.UI.HtmlControls;

  public class Aspcn : Page

  {

  //聲明Web Form中出現的控件

  public Label lblAdText,lblUserName,lblPurview,lblMsgShow;

  public TextBox tbUserName,tbPasswd;

  public Button btnSubmit;

  public AdRotator ad;

  private string strConnString = "server=(local)\Feidao;database=aspcn;Trusted_Connection=yes";

  //處理Adrotator控件建立事件

  public void AdCreated(Object src,AdCreatedEventArgs e)

  {

  lblAdText.Text = e.AlternateText;

  }

  public void Submit_Click(Object sender,EventArgs e)

  {

  SqlConnection MyConn = new SqlConnection(strConnString);

  MyConn.Open();

  string strUserName,strPassword,strSelect;

  strUserName = tbUserName.Text;

  strPassword = tbPasswd.Text;

  strSelect = "select * from bbs_user where id='"+strUserName+"' and password='"+strPassword+"'";

  SqlCommand MyComm = new SqlCommand(strSelect,MyConn);

  SqlDataReader dr = MyComm.ExecuteReader();

  if(dr.Read())

  {

  //登陸成功

  lblMsgShow.Text = "登陸成功";

  lblUserName.Text = dr["id"].ToString();

  lblPurview.Text = dr["purview"].ToString();

  }

  else

  {

  //登陸不成功

  lblMsgShow.Text = "登陸不成功";

  }

  dr.Close();

  MyConn.Close();

  }

  }

  進行事件處理是定義在一個類中的(本例中是Aspcn,注意大小寫),由于需要與Web Forms相關聯,所以此類還必須繼承Page類。

  分析程序,大家可以看到程序中對事件的處理操作是與普通的未進行代碼分離的程序是一樣的,并沒有什么特別的地方。(本人在程序中已經給出的相關注釋,相信對大家理解程序有所幫助)

  使用CodeBehind技術后,大家需要多寫一些代碼,比如聲明控件等,也許大家很不喜歡多寫這樣的代碼,但是大家也必須看到使用了CodeBehind技術后,主程序的可讀性大大增加了。在Example1.aspx中相信大家很快就可以區分頁面構架的各個部分,大家想想這些構架如果在其它技術是否能看得如此清楚?

  (這里的程序只做演示用,呵呵,大家可不要抓我什么引號漏洞這些小辮子喲)

  2 用戶控件(UserControl)

  CodeBehind技術真正實現了代碼與構架的分離,比以前的技術前進了一大步,但是它的缺陷也是顯而易見的,比如主頁面中部那個登陸區,如果內容很多,HTML顯示代碼的依然會占用很大的區域,程序的可讀性依然會降低。

  ASP.Net也提供了解決辦法,這就是用戶控件。

  用戶控件我們可以將其視為不用編譯的Server控件。即然是控件,那么就肯定會遵從控件的使用方法。我們將Example1.aspx中的每個Panel整體看成為一個控件,因此Example1.aspx的主體部分通過使用用戶控件便可以減少為只有三行:

国产麻豆精品视频| 青青久在线视频| 成人免费观看的视频黄页| 亚洲精品久久玖玖玖玖| 你懂的福利视频| 韩国毛片| 国产精品1024在线永久免费| 日韩在线观看视频黄| 国产麻豆精品hdvideoss| 99色视频| 二级特黄绝大片免费视频大片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级毛片视频免费| 黄视频网站免费看| 国产麻豆精品视频| 成人免费一级纶理片| 日韩免费在线观看视频| 91麻豆国产| 99色视频在线观看| 欧美a免费| 91麻豆tv| 四虎久久影院| 成人免费高清视频| 日本伦理片网站| 日韩免费在线观看视频| 精品久久久久久免费影院| 色综合久久天天综合绕观看| 999久久久免费精品国产牛牛| 国产欧美精品午夜在线播放| 久久精品店| 欧美激情一区二区三区在线播放 | 尤物视频网站在线观看| 一级女性全黄久久生活片| 国产成人精品综合久久久| 国产美女在线观看| 国产亚洲男人的天堂在线观看| 亚洲 欧美 91| 国产91精品一区| 欧美爱色| 天堂网中文在线| 成人影视在线播放| 国产精品自拍亚洲| 欧美激情一区二区三区在线| 高清一级片| 亚洲 国产精品 日韩| 一级片片| 亚洲 欧美 91| 韩国妈妈的朋友在线播放| 国产视频久久久| 免费国产一级特黄aa大片在线| 一级女人毛片人一女人| 欧美爱爱网| 日韩中文字幕在线播放| 韩国毛片免费| 久久99中文字幕久久| 色综合久久久久综合体桃花网| 成人a大片在线观看| 国产网站在线| 欧美激情中文字幕一区二区| 国产91精品一区二区| 午夜激情视频在线播放| 国产伦久视频免费观看视频| 日韩一级黄色| 国产麻豆精品高清在线播放| 日韩中文字幕在线观看视频| 精品国产一区二区三区免费 | 国产视频一区二区在线观看| 日韩在线观看视频网站| 日韩在线观看网站| 国产欧美精品午夜在线播放| 色综合久久天天综合观看| 久久国产精品自线拍免费| a级毛片免费观看网站| 天天做日日干| 九九久久国产精品| 国产网站免费| 国产视频一区在线| 日本特黄特黄aaaaa大片| 亚洲第一色在线| 天天色色色| 日韩中文字幕在线播放| 日本在线不卡视频| 中文字幕一区二区三区精彩视频| 一本高清在线| 日日夜人人澡人人澡人人看免| 久久99欧美| 天堂网中文字幕| 99久久精品国产国产毛片| 午夜欧美福利| 成人免费高清视频| 九九精品影院| 99热精品一区| 国产91丝袜高跟系列| 91麻豆国产| 午夜在线亚洲| 国产成人精品综合在线| 青青久久精品| 你懂的福利视频| 国产麻豆精品免费视频| 免费一级片在线观看| 99色播| 国产麻豆精品高清在线播放| 91麻豆高清国产在线播放| 99热热久久| 免费一级生活片| 欧美a免费| 美女被草网站| 四虎论坛| 高清一级毛片一本到免费观看| 精品在线观看国产| 成人免费福利片在线观看| 毛片电影网| 亚洲 国产精品 日韩| 欧美18性精品| 精品视频在线看| a级精品九九九大片免费看| 亚洲第一页色| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品视频在线观看视频免费视频| 日韩在线观看免费完整版视频| 日韩男人天堂| 中文字幕97| 亚洲 国产精品 日韩| 日韩欧美一二三区| 精品久久久久久中文| 国产一区二区精品久久91| 99久久精品国产高清一区二区| 精品久久久久久综合网| 精品国产亚洲人成在线| 日本免费乱人伦在线观看| 国产国语对白一级毛片| 国产精品123| 国产亚洲精品aaa大片| 国产麻豆精品视频| 国产精品1024永久免费视频| 亚洲精品影院| 精品久久久久久影院免费| 欧美激情一区二区三区视频| 一级毛片视频免费| 精品视频在线看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 999精品视频在线| 久久久久久久久综合影视网| 美女免费黄网站| 成人免费观看男女羞羞视频| 色综合久久天天综合观看| 欧美日本免费| 青青青草影院| 你懂的福利视频| 精品视频一区二区| 欧美一级视频免费| 久久国产一久久高清| 黄视频网站在线观看| 青青青草影院 | 美国一区二区三区| 久久久久久久久综合影视网| 国产91精品系列在线观看| 国产伦精品一区三区视频| 精品美女| 午夜欧美福利| 韩国毛片免费| 亚洲精品中文字幕久久久久久| 久久99这里只有精品国产| 成人影视在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 色综合久久天天综合| 亚洲第一页色| 一 级 黄 中国色 片| 亚洲女人国产香蕉久久精品| 中文字幕一区二区三区精彩视频| 久久国产一区二区| 九九九国产| 成人a大片高清在线观看| 精品视频免费在线| 午夜欧美福利| 国产一区二区精品久久91| 99久久网站| 美女被草网站| 亚洲精品永久一区| 中文字幕一区二区三区 精品 | 国产不卡在线播放| 你懂的日韩| 日韩在线观看免费| 国产a毛片| 精品在线观看国产| 国产麻豆精品免费视频| 国产国语对白一级毛片| 精品久久久久久中文字幕一区| 亚洲精品永久一区| 国产高清在线精品一区a| 青青久在线视频| 美女免费精品高清毛片在线视 | 欧美激情一区二区三区在线 | 四虎影视精品永久免费网站 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品久久久久久中文| 国产精品自拍亚洲| 毛片成人永久免费视频| 99久久精品国产麻豆| 亚洲女人国产香蕉久久精品|