ASP.NET 2.0入門經典學習筆記.txt

來源:互聯網
上載者:User

repeater
<span>
<%# Eval("date","{0:dd mmm yyyy}")%>
</span>

DateTime.Now.ToString("yyyy/mm/dd")
---------------------------------------------------------------------------------------------------------------------
多層次的Master頁面
如果有多個層次,就只能在Source視圖中開啟了<%@master>
<%@materPageFile=%>
對於多層次,就產生了中間頁,就有<asp:content>標記,該標記與Master頁面中的<asp:ContentPlaceHolder>標記相關聯
然後在這個<asp:content>標記中有一個<asp:ContentPlaceHolder>標記,用於包含下一層的頁面。
樣本

本節包含三個程式碼範例。第一個程式碼範例示範如何建立嵌套主版頁面 .。第二個程式碼範例示範如何引用在第一個程式碼範例中建立的主版頁面。第三個程式碼範例示範如何使用內容頁來引用在第二個程式碼範例中建立的主版頁面。

下面的程式碼範例示範如何建立嵌套主版頁面,並表示名為 ParentMasterPage_1 的父級主版頁面。

C# 複製代碼<%@ Master Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html  >
<head runat="server">
    <title>Nested Master Page Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <h1>This is content in the parent master page.</h1>
    <div>
        <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        </asp:contentplaceholder>
    </div>
    </form>
</body>
</html>

下面的程式碼範例示範如何使用名為 ChildMasterPage_1 的嵌套主版頁面,它引用在前一個程式碼範例中建立的主版頁面。

C# 複製代碼<%@ Master Language="C#" MasterPageFile="~/ParentMasterPage_1cs.master" %>

<asp:Content Runat="Server" ContentPlaceHolderID="ContentPlaceHolder1">
    <h2>This is the content of a nested Master Page.</h2>
    <div>
        <asp:contentplaceholder id="ContentPlaceHolder2" runat="server">
        </asp:contentplaceholder>
    </div>
</asp:Content>

下面的程式碼範例示範如何使用名為 ContentPage 的內容頁,它引用在前一個程式碼範例中建立的 ChildMasterPage_1。

C# 複製代碼<%@ Page Language="C#" MasterPageFile="~/ChildMasterPage_1cs.master" Title="Untitled Page"%>

<asp:content runat="server" contentplaceholderid="ContentPlaceHolder2">
This is the content of a Content control.
</asp:content>

   如同Theme可以格式化網站控制項的顯示模式一樣,MasterPage可以定義網站中不同網頁的相同部分,如格局、頁頭、頁尾、導覽列等。可以把這些控制項定義到一個MasterPage上,其它網頁繼承這個MasterPage即可。繼承後體現在這些網頁公有部分都相同,而不同部分在於MasterPage有一個ContantPlaceHolder,這個控制項定義了一個可以被其它頁面繼承的地區,該地區可以被其它頁面用來擺放自己的控制項。建立Web頁面時核選上使用母片,然後選擇母片即可。

    注意:應用程式可以在Web.config中指定預設的主版頁面,如下所示:

<configuration>
    <system.web>
        <pages masterPageFile="~/Foo.master" />
    </system.web>
</configuration>

    好了.MasterPage來了,編寫頁面簡單了,全部在ContentPage頁面中填充ContentPlaceHolder就可以了...問題也就來了...現在,我某部分頁面會使用一些javascript(放在一個calendar.js中),怎麼辦?哈,只過了0.01秒我就想到了"解決方案":往ContentPage寫個串連不就完了麼?類似:

<script type="text/javascript" src="../../../js/calendar.js">script>

(注意:src是ContentPage到JS檔案的相對路徑!!!)很好,小夥子,沒有把一千多行的JS代碼直接丟到頁面:)但,問題是,你要把這句話丟到哪兒?費話,當然放到頁面的"頭上"了...呵呵.現在ContentPage都沒有頭了,head都在MasterPage裡面去了.丟到ContentPage的ContentPlaceHolder外面?不行,HTML解晰不過去...
    Google了一下,學到如下知識:說白了,MasterPage就是原來頁面中的控制項,只不過原來都是頁麵包裹著控制項,現在是控制項包裹著頁面而已:)對於用戶端-Brower來說,他對MasterPage是一無所知的.當客戶請求某一頁面的時候,Asp.net runtime發現該頁運用了MasterPage,於是把兩個獨立的部分按照佔位符-ContentPlaceHolder將其整合起來,返回給客戶,而這一過程對客戶來說是透明的....
    既然這樣,很簡單,我們把上面那句指象js的話放到MasterPage不就完了麼?(這裡有一點要注意,這個時候的src,不能按照MasterPage到JS的相對路徑.為什麼?剛不說了麼?:)OK.成功.不過"../../../"這個相對路徑肯定有問題,寫這個路徑,完全是針對我的ContentPage,也就是說,如果其他目錄的ContentPage將無法使用這個JS,這當然不行,那就把他改成絕對路徑貝"~/js/..".不過理所當然的方案也不行,asp.net無法找到JS?暈了...試了好久,改了好久至今無法解決這個問題.放個針對某些頁的相對路徑在MasterPage當然不行.無奈之下,只能另闢捷徑,最後總算髮現,把上面那句JS串連的話放到每個ContentPage中的某個ContentPlaceHolder中就OK了.問題算是解決,思想算是合理,不過做法太醜陋了.....沒辦法,抓狂死了..

一般而言,連結路徑的表達有三種方式:絕對路徑、相對路徑和基於根目錄的路徑。另外對於ASP.NET伺服器控制項來說,還可以使用“~”來代替根目錄來表示。
在MasterPage和使用者控制項中,經常要使用一些圖片作為背景或漂亮的按鈕,但是在指定圖片的src或者background時候,經常因為連結路徑的問題而出錯。
1.使用絕對路徑:使用形如“D:\xxx\xxx.gif”的絕對檔案路徑一般情況下是不可取的。可以考慮採取url的方法,寫成http://xxxx/xx/xxx.gif”。但是缺點是不利於移植,例如現在網站的地址為http://www.xxx.net,如果有一天網站更該http://www.xxx.com,則所有的連結地址都失效,需要變更,難以維護。
2.使用相對路徑:使用相對於頁面位置的路徑,比如“..\images\xxx.gif”,這樣MasterPage和使用者控制項中都能正確顯示,但是如果將繼承MasterPage的頁面放到不同的檔案夾下,或者使用使用者控制項的頁面不在同一檔案夾,那麼該頁面又會找不到正確的圖片位置了!
3.基於根目錄的路徑:形如:<a href="/xxx/xxx.gif">這樣的解決方案在ASP.NET2.0調試的時候,因為沒有建立虛擬目錄,並不能正確顯示(我也不是很肯定,沒有確認^_^)。而我在非伺服器控制項的HTML標籤元素上無法使用“~”來指定路徑。
那麼,在設計時讓圖片可見,我們應該怎麼來處理呢?我採用了CSS來完成這項工作。針對要顯示圖片的元素和控制項,我們可以寫一段簡單的css來定位元影像片,因為css檔案的位置是一般不會改變的(位於App_Theme/themename/xxx.css),這種方法也就行之有效了。
.HideBar
{
height:56px;
width:5px;
cursor:hand;
background-image: url(../../images/xxx.gif);
}接下來我們只需要在相應的元素和控制項的cssclass中填入HideBar,就可以做到每個繼承MasterPage或使用使用者控制項的頁面都能正確顯示圖片了。
我想應該還有其它更好的辦法,也希望有人能指點一二。
----------------------------------------------------------------------------------------------
集合
ArrayList:在添加項時動態調整大小,最適合用於在資料頻繁改變時儲存自訂物件類型,例如在執行頻繁的插入和刪除時
Hashtable:最適合於不會頻繁改變的資料,特別適用於經常查詢的資料
Queue(先進先出):在需要按順序排序的資料時應該使用該集合
SortedList(有順序的儲存空間key/value):會使添加資料變的很慢,因為重新安排已有的項,以確保新的項目具有正確的順序,適用於不會經

                                   常改變的資料
Stack(後進先出):需要按逆序排序的資料時應該使用該集合
StringCololection(字串的集合):是強型別的ArrayList,用於儲存具有任意順序的字串,並且用於頻繁改變的字串。
StringDictionary:強型別的HashTable,因此它用語需要排序的字串時,並且這些字串不會經常改變。
儲存字串時,有StringCololection、StringDictionary因為他們只儲存字串
----------------------------------------------------------------------------------------------------------------
lable1.text.split(splitChars.ToCharArray())
text返回String split是String類的方法,傳遞到字串中的參數並不是splitChars變數本身,
而是已經轉換成字元數組的splitChars(使用ToCharArray())
Split方法所需要的類型為字元數組

如果元素的個數不發生變化,最好使用數組,否則使用集合

使用屬性而不用公有變數是因為物件導向的抽象原則,那些私人變數作為內部儲存空間,屬性只是該類的使用者用語訪問內部變數的方法
-------------------------------------------------------------------------------------------------------------------
學習泛型 泛型集合  System.Collections.Generic
無論何時,在需要一個自訂類的集合時,最好使用泛型集合,提高代碼的可讀性減少潛在錯誤
private items as new list(of cartItem)
cartItem 這是一個自訂類,其中有變數
dim items as new list(of cartitem)

dim item as cartItem(...)
items.add(item)

該列表是個明確的資料類型,不能執行以下的操作
items.add("ffff")
-------------------------------------------------------------------------------------------------------------
partial class 不完全類表示在編譯時間後台代碼檔案和WEb Form被融合到一個類檔案中

asp.net 2.0 使用者代碼----Microsoft Intermediate Language--Common Language Runtime---可執行代碼
編譯方法:
Pre-Runtime Compilation(運行前編譯):後台代碼檔案被編譯到一個程式集並被儲存在\bin目錄下。在需要時再編譯Web Forms 和.aspx頁面

Full Runtime compilation(完全運行時編譯):後台代碼檔案和其他所有相關代碼被放在APP_Code檔案夾中,然後ASP.NET 2.0建立和維護對該

程式集(在運行時從這些檔案中產生的) 的引用。

部署先行編譯(deployment pre-compilation)它是在部署之前對項目進行完全編譯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.