我的ASP(C#).NET之路·初步的概念(

我的ASP(C#).NET之路·初步的概念(轉載)
□xuly 發表於 2005-8-27 20:00:00

 

這幾天似乎終於對ASP.NET花樣繁多的控件和C#那些名堂繁複的類有了一點感覺,啃了幾天書以後,終於出爐了我自己的第一個page;
在這裏貼出來,希望大蝦指教,也和其他的初學者做一個交流——我總覺得教程上寫的太複雜,自己的思路反而倒是很簡單的;
另外,順便可以看作是自己的成長道路把。

首先,說一下關於ASP.NET控件的基本知識,還有關於C#的基本知識(關於我自己所瞭解的和理解的);

關於ASP.NET的控件,對於我這樣一個從頭到尾都是面向結構出身(ASP)的人,再沒能理解以前幾乎對此一竅不通,這也正是想要學習ASP.NET但是卻喊了將近兩年的口號去學ASP和網頁平面設計的原因...那麼這些控件到底是些什麼東西呢?怎麼用呢?

我最近大量的接觸到相關的東西,包括JavaScript和Flash的AS,以及結合C#入門書籍,總結出一個概念:
1、控件 = 實例化的對象 < 類
2、關於實例化的對象;
通常在一個常用的page裏面大約是這樣的:
page 是最頂層的對象,它有很多屬性(例如顏色)和相關的唯一標識(id or name);
form 表單是在page之下的一個對象,同樣有屬性;
input 表單裏面的各種元素是form下的對象,也是有各種屬性的;

這樣我們要通過程序來控制的時候可以這樣來表示全頁面這個唯一的特定的元素,例如在javascript裏面是這樣的:
document.formName.inputUserName.Value

表示當前文檔中一個叫做formName的表單中一個inputName文本輸入框的Value(值);
document.formName.inputUserName.focus()

()這裏表示inputName這個實例對象的一個方法(操作它的函數),方法名爲:focus;

同樣的道理,頁面所有的元素,包括table、tr、td、a、font……統統都可以算是實例化的對象;最後,實例化主要是指可以直接操作的,不是抽象的;

在一個javaScript+html的頁面裏,通常通過加在page裏面的js程序來實現對page下每一個元素的控制,除了js語言本身的函數以外,用js編寫的各種函數(通常可見是放在head裏面的)都可以視作對象的方法(),從而實現頁面在本地的動態化;
而js+html歸根到底是本地動態,可以算得上是僞動態的,因爲大量的數據總是需要被保護起來放在服務器上的;

ASP.NET控件強大的威力之一就顯現在這裏;
不管是HTML控件,還是WEB控件,在HTML裏面除了標籤寫法不一樣以外,最重要的是這樣幾個屬性,例如:



id作爲唯一的表示決定了這個空間的調用名稱,而runat="server"則表示這個控件(實例化的對象)可以通過在服務器段的程序來控制;

·這裏和javascript+HTML的重要區別在於:ASP.NET的全部程序代碼都是放在服務器段的,HTML代碼原樣發送到客戶端瀏覽器,而HTML/WEB空間則在處理以後才發給瀏覽器,這表示安全、保密,並且ASP.NET的語言是強大的VB、JS、C++以及最新的C#,這些從一開始就是面向對象的語言可以爲ASP.NET提供無比強大的功能,最後客戶端的程序是連接着數據庫,是真正意義上的動態更新——不僅於此,ASP.NET的精髓不在於ASP.NET的頁面,而在於基於XML的Web Service,這表示一個站點是可以和全世界所有的站點連接起來動態更新的,這已經把動態的概念提到了無以復加的地步。

如果瞭解javascript,這裏舉一個簡單的相同功能的例子,來表示它們之間的相似和不通,它們同樣在進入一個頁面的時候更改了頁面的某個元素的值:

javascript -在本地運行,數據是固定的;


C#.NET -程序在服務端,本地只有html代碼

<%@ Page Language="C#" %>
<script runat="server">
  void Page_Load(object sender, EventArgs e){
    demotext.Text="ok"; //這個賦值在服務端,可以調用數據庫
  }
</script>
<body>
<asp:Label id="demotext" runat="server"></asp:Label>
</body> 

以上程序在編譯以後運行效果和前一個js的例子完全一致,也就是說其它的方面,包括對這個對象某個屬性的更改以及使用某個方法(函數)的思路完全都是一致的;
輸出到瀏覽器的源代碼是:



3、關於類;
C#是一個完全面向對象的語言,它的全部操作都是基於這些對象的,例如對對象的屬性的操作,已經對象的方法(即操作它的函數);換句話而言,C#的核心結構就是類,大的類移植到頂層的System,小到屬性本身也可以定義爲一個類,這種設計使得C#的各種實例化對象可以由點到線,由線而面,有面及體,無限的交叉和互相組希⑶以諉懇桓鮃桓鑫⒐凵隙加兇挪畈歡嗟謀嘈捶椒ā?
ASP.NET裏的各種控件,就是這樣的一種比較微觀的類。
類的概念就像是中國古人所說的陰陽,僅此而已,整個世界除了陰陽就再也沒有別的了,從大的到小的都是陰陽相合而生;在C#的世界裏類就是陰陽。
對於C#語言本身其實和以前面向結構的語言沒有太大區別——這裏指出一點,面向結構可以算是C#中微觀中的微觀,無論C#怎麼面向對象,再深到了最後都是0101010001這樣的代碼,再往下可就直接涉及到電子運動了:o
C#語言本身不外乎是數據類型和控制語句,int,string,或者if else都是很常見的東西basic時代就被瞭解的東西了吧?因此C#真正入門還是要在類上的理解。

這樣,我們從具體說到小的,從小的說到大的,最後一通百通,無論大小,都以類這個概念概括完,而在ASP.NET裏面的各種控件,不外乎是從類而實例化的對象,類可以怎麼玩兒,控件就可以怎麼玩兒。

那麼到此爲止,我總算是開了點竅,ASP.NET的大門向我開了一個縫,在瞭解了這些概念,並且研究了C#語言關於類的一些知識以後,我的第一個ASP.NET的page很快就出爐了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章