學習日記

1,頁面狀態:在asp.net中,頁面對象的屬性、頁面控件的屬性被稱爲“view state”(頁面狀態)。頁面狀態在asp.net中被受到特別關照.


2:程序集,可以把程序集簡單理解爲你的.NET項目在編譯後生成的*.exe或*.dll文件. 如果說命名空間是類庫的邏輯組織形式,那麼程序集就是類庫的物理組織形式。只有同時指定類型所在的命名空間及實現該類型的程序集,才能完全限定該類型。(摘抄自《精通.NET核心技術--原來與架構》 電子工業出版社)

也就是說,你要創建一個類的實例,必須知道該類的 命名空間(這個一般都知道)+程序集
我怎麼把項目和程序集聯繫起來理解?

一個項目對應一個程序集.項目名與程序集名相同。

Templated 模板
theme 主題
control,空間

在C#中把屬性成員稱作“域(field)”,而“屬性”則成爲這種“屬性化的方法”專用的名詞。

Page.IsPostBack 是用來檢查目前網頁是否爲第一次加載,當使用者第一次瀏覽這個網頁時Page.IsPostBack 會傳回False,不是第一次瀏覽這個網頁時就傳回True;所以當我們在Page_Load 事件中就可以使用這個屬性來避免做一些重複的動作。

parse 類型轉換
Convert:
1. 轉變,變換[(+to/into)]
They converted the garage into a theater.
他們將車庫改成戲院。
2. 使皈依;使改變信仰[(+from/to)]
The priest converted many natives into Christianity.
這個牧師使許多土著居民改信基督教。
3. 非法挪用
4. 兌換(證券、貨幣等)[(+into)]
He wanted to convert his dollars into Japanese yen.
他想將美元換成日幣。
vi.
1. 轉變,變換[(+to/into)]
2. 皈依;改變信仰[(+from/to)]
He converted to Catholicism.
他改信天主教。
---------------------------------------------------------------------
用戶控件和自定義控件的定義及區別
代號0324 時間2006-2-7 13:26:00
(一).用戶控件和自定義控件概述 
       用戶控件(UserControl):  擴展名爲*.ascx,跟*.aspx在結構上相似,是指頁面中 
加載的功能塊,只是用戶控件不能單獨作爲頁面運行,必須嵌入到*.aspx頁面或其它用 
戶控件中使用. 
       自定義控件,跟HtmlControl或WebControl相似,編譯後可以添加引用到工具欄裏 
面,直接用鼠標拖動使用. 
 
(二).使用       
       在一個大系統中,有時候會只能幾個*.aspx頁面,其餘的都是做成*.ascx頁面, 
這樣可以增強頁面之間的藕合性,一個用戶控件*.ascx都作爲一個獨立的功能塊. 
       自定義控件是指編譯後直接可以放到工具箱中用,就像TextBox,DataGrid一樣 
在設計器中可以用鼠標拖動到頁面上使用. 
       自定義服務器控件分爲兩種:   
               1.一種是用*.aspx代碼和*.cs代碼編譯後生成DLL,再添加引用到工具箱使用.         
                   一般用於WebForm中.       
               2.另一種是隻用*.cs實現,再編譯生成DLL,添加到工具箱使用. 
                   一般用於WinForm中. 
       自定義控件生成步驟: 
             比如:   
               1.  將一個Button從設計器拖到頁面中, 
                     對按鈕大小,顏色或文本設置一個固定值,保存文件名爲:  a.cs 
               2.  csc  /r:System.dll  /t:library/out:../../A.dll    a.cs 
               3.  右擊工具箱空白處,彈出右擊菜單後,選“添加移除項”,將剛生成的DLL 
                     添加到工具箱裏面來,這樣,就可以像一般的Button一樣拖動使用了

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=572470
-------------------------------------------------------------------------------
當一個方法被聲明爲Virtual時,它是一個虛擬方法
子類在使用它的時候要重載(override)

從上面不難看出,一個靜態的方法是真實存在的,而一個虛擬方法可以被派生類重寫,這二者是衝突的,其實對於一個方法,C#規定只能使用下面這些限定符中的一個:
override virtual static abstract sealed
代表的含義分別爲:
重載函數、虛擬函數、靜態函數、抽象函數、密封函數(不可派生)
Virtual

    Virtual 關鍵字允許在派生類中重寫這些對象,默認情況下,方法是非虛擬的,不可以重寫非虛方法,virtual關鍵字不可以與static、abstract、private、override一起使用。
    Virtual關鍵字又是和override緊密不可分的,如果要實現Virtual方法就必須要使用override或new關鍵字(new和override產生的機理不同)。

    abstract

        在類聲明中使用abstract修飾符以指示某個類只能是其他類的基類。標記爲抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現。抽象類不能實例化。
        抽象方法聲明不提供實際的實現,所以沒有方法體;方法聲明只是以一個分號結束,並且在簽名後沒有大括號 ({ })。

        sealed

        密封方法會重寫基類中的方法,但其本身不能在任何派生類中進一步重寫。密封類不能被繼承。
        當應用於方法或屬性時,sealed修飾符必須始終與override一起使用。

    Override

    Override關鍵字主要是提供派生類對基類方法的新實現,重寫的基類方法必須和Override的方法具有相同的簽名


-----------------------------------------------------------------------------------
Page_Load是服務器端頁面加載時處理的第一個事件  
  OnLoad只是客戶端的JS用來加載控件時處理的事件
Control.OnLoad是一個虛方法,當在程序中將它用overrite覆蓋後就等效於Page_Load,當然,你的類需要從System.Web.UI中繼承
Page_Load是事件,當服務器控件加載到   Page   對象中時發生;  
  OnLoad是方法,引發   Load   事件。
-------------------------------------------------------------------------------------
事件驅動模型:建立在請求/響應基礎上的.
在服務器和客戶之間,存在另外一種模型:事件驅動模型 服務器等待客戶機發生的事件,一旦事件發生後,服務器將採取行動,執行某些功能。
-----------------------------------------------------------------------------------------
服務器空間
asp.net用隱藏表單字段來記錄每個空間的視圖狀態,並相應的更新它們。
客戶端雖然不能和服務器端交互,但是能夠將消息轉發給服務器。
-------------------------------------------------------------------------------------------
CLR 運行階段通用語言。(Common Language Runtime),相當於java的虛擬機jvm
MSIL 微軟中間語言。
有了。net框架和CLR後,仍需要編寫大麻並對其進行編譯,不過您將代碼編譯爲MSIL。而不是編譯成某種計算機能夠理解的語言。asp.net頁面也被編譯爲MSIL,編譯爲MSIL時,應用程序將生成一些元數據(metadata),它們是關於應用程序的描述性信息,指出應用程序能做什麼,歸屬哪裏等等。

當您要運行程序時,由CLR將接管工作,進一步將代碼編譯成機器的本地語言。這樣,MSIL便可以用於任何類型的計算機,CLR懂得許多不同的計算機語言。
------------------------------------------------------------------------------------------
。net框架中的任何東西----asp。net頁面,消息框等等----都被視爲對象,這些對象被放置在叫做名稱空間的邏輯分組中。
------------------------------------------------------------------------------------------
服務器控件:服務器控件是Web表單的用戶界面元素,asp。net有四種服務器控件:HTML服務器控件 web控件,有效性驗證控件和用戶控件。HTML服務器控件代表常規的HTML表單元素。但它們是在服務器上創建的,您可以在服務器上控制它們。

所有服務器控件都有屬性,方法和事件,他們提供的功能比傳統的HTML表單元素多,使開發人員創建用戶界面更容易。創建服務器控件時,不必爲編寫HTML代碼而操心,頁面被請求時,服務器控件將自動生成正確的HTML代碼。例如:<asp:Button test="submit" runat="server"/>
該按鈕被請求時,它將自動爲客戶生成下面對俄HTML
<input type="submit" name="btn1" value="submit">

前一行僅供服務器使用----客戶看不見它 (即使瀏覽器可以看到,也看不懂,因爲它僅能識別HTML代碼),以這樣的方式創建控件,您可以少花時間去考慮 提供UI佈局的HTML 而將 更多的時間用來考慮 UI應該實現什麼樣的功能。

asp.net知道各種瀏覽器的 功能。對於不支持高級功能的瀏覽器而言,asp.net可以降低 HTML輸出級別 。


服務器控件事件:
服務器控件能 引發很多事件,換句話說,用戶可以對服務器控件執行許多操作:單擊按鈕,單擊鏈接,,填寫文本框,選擇列表框中的條目等等。所有的這些事件都要有服務器進行處理,所以每當事件發生時,客戶都要向服務器發送信息。

只有主動時間纔會被服務器進行處理。
主動事件要求用戶進行明確的操作,即用
戶必須有意識的操作。包括單擊按鈕或者鏈接,填寫文本框,被動事件是用戶無意中執行的操作,例如鼠標在圖像上移動。

向服務器發送事件的方式有兩種:發生時立即發送和累積一段時間後一起發送。後者效率更高,因爲用不着發送那麼多次。這意味着在客戶服務器之間傳遞的數據更少。

到多數情況下,您將使用後一種方法,例如 :假設用戶將其姓名輸入到表單中,每鍵入一個字母,就發生一個事件。您並不希望每次更改一次字幕就發送一次數據,而希望在用戶輸好數據或單擊submit按鈕後再發送。這種事件被緩存(cached),即在用戶決定發送數據前,他們被存在客戶端。這樣服務器可以一次性處理這些事件。

實際上這種事件被稱爲TextCHanged事件,它只在用戶輸入文本並離開該UI元素
發生,但道理都一樣的。

asp.net中的所有服務器控制事件都會向服務器發送兩個對象:一個代表引發事件的控件,另一個描述關於此事件的特定信息。(參考第三章)

有事件發生時,控件自動引發事件,爲了在服務器上處理事件,需要告訴控件使用哪種方法。如下面代碼告訴asp.net,發生ckick事件時,使用CilckHandler方法來進行處理
<asp:Button tunat="server" onclick="CilckHandler">

<%@ Page Language="VB"%>
<script runat="server">
sub Button_Click(abj as object, e as EventArgs)

Label.Text="you clicked<b>"&&abj.Text&"</b>"
end sub
</script>
<html><body>
<font size="8">sam's a Teach Yourself ASP.NET in 21 days:Day 5 </font><br>

<form>
<asp:Button id=Button1 runat="server" Text="Button1" onclick="Button_Click"/>
<asp:Label id="Label" runat="server"/>
</form></body></html>

讓我們來看看:Label.Text="you clicked<b>"&&abj.Text&"</b>"
該行將名稱爲Label控件的Text屬性設置爲等級後面的值,obj是其中一個參數的名稱參數,因爲您知道它代表一個按鈕,因此知道它有Text屬性。


因爲按鈕控件沒有發送其他信息,因此方法第2個參數(e)當前麼有包含任何信息,當然,您還是要將他包括在內,因爲它是標準事件參數列表的一部分。
-----------------------------------------------------------------------
發送web表單:

-----------------------------------------------------------------------
向頁添加 Repeater Web 服務器控件需要若干步驟。下列過程描述創建一個工作的 Repeater 控件必須執行的最少步驟。

向 Web 窗體頁添加 Repeater Web 服務器控件

向 Web 窗體頁添加一個數據源。有多種方法可處理頁上的數據。若要選擇適當的方法,請參見 ADO.NET 數據訪問介紹和對 Web 窗體頁中數據訪問的介紹。
在“設計”視圖中,從“工具箱”的“Web 窗體”選項卡將 Repeater 控件拖到頁面上。
設置控件的 DataSource 屬性。在“屬性”窗口中,DataSource 屬性的下拉菜單中將顯示所有數據源,例如在頁上定義的 DataSet 和 DataView 控件。
調用控件的 DataBind 方法。通常使用如下所示代碼在該頁的 Page_Load 事件中完成此操作,此處 Repeater1 控件綁定到 DataSet 對象。由於 DataSet 已在設計器中綁定到 Repeater 控件,所以它不需要在該代碼中進行綁定:
' Visual BasicProtected Sub Page_Load(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles MyBase.Load   ' Put user code to initialize the page, including data, here.    Repeater1.DataBind()End Sub// C#protected void Page_Load(object sender, EventArgs e){   // Put user code to initialize the page, including data, here.   Repeater1.DataBind();}
切換到“HTML”視圖。
在 Repeater 元素內創建包含 HTML 文本和控件的模板,以顯示數據。有關詳細信息,請參見 Web 服務器控件模板。有關 ItemTemplate 元素的主幹可能會如下所示:
<asp:repeater id=Repeater1 runat="server" datasource="<%# dataView1 >">   <ItemTemplate>   </ItemTemplate></asp:repeater>
向模板添加 HTML 元素和 Web 服務器控件的任意組合以顯示數據源信息。
必須通過包括一個數據綁定表達式將控件綁定到數據。通常,將它們綁定到容器控件。顯示數據源中每行的“EmployeeName”和“PhoneNumber”字段的 ItemTemplate 元素將類似如下所示:

<ItemTemplate>   <%# DataBinder.Eval(Container, "DataItem.EmployeeName") %>   <%# DataBinder.Eval(Container, "DataItem.PhoneNumber") %>   <br></ItemTemplate>
有關詳細信息,請參見 Web 窗體頁中的數據訪問。

下面的示例說明一個完整的 Repeater 控件定義在“HTML”視圖中應類似於什麼樣子。指定將 Repeater 控件呈現爲表。<table> 元素在 HeaderTemplate 中開始並在 FooterTemplate 中結束。(“任務列表”將報告有關這種情況的錯誤,但是這些錯誤可以安全地忽略,在運行應用程序時,該表將正確地顯示。)在 Repeater 控件體內,表單元格用於顯示數據源的列。除了表單元格的背景色不同以創建帶狀效果外,AlternatingItemTemplate 元素與 ItemTemplate 項相同。

<asp:Repeater id=Repeater1 runat="server" DataSource="<%# DataView1%>">   <HeaderTemplate>      <table width="100%" style="font: 8pt verdana">      <tr style="background-color:DFA894">         <th> First Name </th>         <th> Last Name </th>      </tr>   </HeaderTemplate>   <ItemTemplate>      <tr>         <td><%# DataBinder.Eval(Container, "DataItem.EmployeeName") %>          </td>         <td><%# DataBinder.Eval(Container,"DataItem.PhoneNumber") %>          </td>      </tr>   </ItemTemplate>   <AlternatingItemTemplate>      <tr>         <td bgcolor="lightblue">         <%# DataBinder.Eval(Container, "DataItem.EmployeeName") %> </td>         <td bgcolor="lightblue">         <%# DataBinder.Eval(Container,"DataItem.PhoneNumber") %> </td>      </tr>   </AlternatingItemTemplate>   <FooterTemplate> </table> </FooterTemplate></asp:Repeater>
下面的示例使用標籤 (Label) 控件顯示數據庫的值。使用分隔符模板創建列表中值之間的分隔符。請注意,Label 控件的 Text 屬性的值包含在單引號中。屬性值通常放在雙引號中,但是由於 DataBinder 調用包含雙引號,所以 Text 屬性值必須括在單引號中。

<asp:Repeater id="Repeater1" runat="server" DataSource="<%# DataView1%>">   <ItemTemplate>      <asp:Label id=Label1 runat="server"          Text='<%# DataBinder.Eval(Container, "DataItem.EmployeeName")%>'>      </asp:Label>   </ItemTemplate>   <SeparatorTemplate>,</SeparatorTemplate></asp:Repeater>

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=4464

------------------------------------------------------------------------

用模板從DataList把數據度到頁面上來 。
--------------------------------------------------------------------
web表單通過表單隱藏字段來保存表單中每個空間的視圖狀態(viewstate)。試圖狀態指出控件中輸入的內容,控件是否被選中,哪個列表被選中等信息,試圖狀態提供了大量的信息,asp.net可以用來維護每個服務器控件的狀態。
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=""/>
------------------------------------------------
委託

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章