1. 程式人生 > >我的ASP(C#).NET之路·初步的概念(

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

這幾天似乎終於對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很快就出爐了。