天天看點

.Net使用者控件

使用者控件

使用者控件是個什麼東西?

自定義的反複重用的控件集合

好處?

1.代碼重用

2.結構良好

3.分工開發

4.局部緩存

難點:

一.交換資訊:

注意資訊的交換隻在相鄰層之間進行交換,如果是嵌套交換資訊除Session外都需要一層一層的寫代碼互動

(一)從頁面向使用者控件交換資訊。代碼寫在頁面中。

1.使用者控件名.FindControl("使用者控件中的控件的ID")

TextBox textBox1 = WUC1.FindControl("TextBox1") as TextBox;

暴力轉換:盡量少用

案例:添加按鈕click屬性,點選後往使用者控件中傳資訊

.Net使用者控件
.Net使用者控件

效果如圖:

.Net使用者控件

2.事先在使用者控件中定義public屬性,通過屬性為裡面的控件指派或取值。

使用者控件中的代碼:

.Net使用者控件
.Net使用者控件

 寫好屬性之後會在設計界面使用者控件屬性的雜項中出現該屬性名,如下圖

.Net使用者控件

頁面中的代碼:

同方法一:在按鈕上添加click事件

.Net使用者控件

(二)從使用者控件向頁面交換資訊。代碼要寫使用者控件。

1.session

第一步:在使用者控件的按鈕中把資料放在Session中。

給button加click事件

第二步:在頁面的OnLoadComplete事件中,從Session中取出資料來,顯示在頁面上。 

在頁面中重寫override函數 onloadComplete

這樣在頁面加載完成後執行下面的方法,判斷Session["text"]中如果沒有資訊就什麼也不執行,注意第一行 base.OnLoadComplete(e)不能删

.Net使用者控件
.Net使用者控件
.Net使用者控件

2.代理、委托 delegate

指向方法(動作)的引用。 Dog d = new Dog();

類比:類的使用 - 指向對象的引用

類的使用步驟:

第一步:用class 關鍵字定義一個類的類型

public class Dog

{

//成員變量定義

//成員屬性定義

//成員方法定義

}

第二步:使用這個新的類型定義一個變量(類的變量)引用。

Dog d;

第三步:把這個變量引用指向一個新對象。

d = new Dog();

第四步:通過調用引用,實作對對象的調用。

d.Name

d.Bark()

代理的使用步驟:

第一步: 使用 delegate 定義一個新的代理類型。

public delegate 傳回類型 代理類型名( 參數定義);

例如:public delegate void ShowDelegate(string s);

第二步:使用新的代理類型定義一個變量(代理變量)

ShowDelegate Show;

第三步:把代理變量指向一個新的方法

Show = new ShowDelegate(方法名);

第四步:通過調用代理來實作對方法的調用。

Show("hello");

 案例:從一個使用者控件中向另一個使用者控件加添加節點

定義一個delegate代理ShowDelegate,然後生命一個代理執行個體化

給button寫click事件

.Net使用者控件
.Net使用者控件

 給代理寫所需要綁定的方法(可以是在另一個使用者控件上--誰需要這個方法在誰上面寫)

.Net使用者控件
.Net使用者控件

給代理綁定方法--寫在加載的頁面上load裡面,注意不要寫在if(!IsPostBack中)因為每次加載都需要綁定

綁定使用方法同屬性如:

.Net使用者控件
.Net使用者控件

二.路徑:

1.控件路徑:圖檔、超連結

使用服務端的控件。标準控件或者HTML标記加上runat=server.

這樣服務端就會自動轉換成正确的路徑出來。

如:

注意加runat="sever"必須加上id=""

2.樣式表中值的路徑:background-image:url(路徑)

不要使用内聯樣式,使用外部樣式表來控制圖檔路徑。

首先在解決方案下添加外部樣式表

.Net使用者控件

代碼如下:

注意路徑必須正确:確定從樣式表可以找到對應的路徑

然後,給需要加樣式表的标簽一個class="dd"名(這裡用的.dd給class 也可以給加id="dd"樣式表改為#dd)

最後在需要使用的頁面把樣式表拖到,源頁面的<head></head>中

.Net使用者控件

3.外部資源路徑 - 使用者控件中引入外部腳本檔案

使用 string path = ResoveClientUrl("伺服器端路徑"); //傳回的是用戶端對應的路徑

首先在使用者控件上加<script></script>指定路徑寫一個函數 注意不是# 是=,如下

然後在解決方案下添加外部腳本

.Net使用者控件

腳本代碼:

最後在cs代碼界面添加對應的方法

.Net使用者控件
.Net使用者控件

4.C#代碼的調用路徑

Response.Redirect("頁面");

使用應用程式路徑的根來解決

在路徑前面加上一個 ~ 符号--從跟目錄開始尋找

Response.Redirect("~/Default.aspx")

.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件
.Net使用者控件