日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.Net用户控件

發(fā)布時(shí)間:2025/7/25 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net用户控件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用戶控件
用戶控件是個(gè)什么東西?
自定義的反復(fù)重用的控件集合

好處?
1.代碼重用
2.結(jié)構(gòu)良好
3.分工開發(fā)
4.局部緩存

難點(diǎn):
一.交換信息:

注意信息的交換只在相鄰層之間進(jìn)行交換,如果是嵌套交換信息除Session外都需要一層一層的寫代碼交互

(一)從頁面向用戶控件交換信息。代碼寫在頁面中。

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

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

暴力轉(zhuǎn)換:盡量少用

案例:添加按鈕click屬性,點(diǎn)擊后往用戶控件中傳信息

protected void btn_Click(object sender, EventArgs e){string s = Label1.Text;TextBox textbox1 = WebUC1.FindControl("TextBox1") as TextBox;textbox1.Text = s;}

效果如圖:

?

?

2.事先在用戶控件中定義public屬性,通過屬性為里面的控件賦值或取值。
用戶控件中的代碼:

public string TextValue{get {return TextBox1.Text;}set{TextBox1.Text = value;//設(shè)置文本框里面的值 }}

?寫好屬性之后會(huì)在設(shè)計(jì)界面用戶控件屬性的雜項(xiàng)中出現(xiàn)該屬性名,如下圖


頁面中的代碼:

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

protected void Button1_Click(object sender, EventArgs e){WebUC1.TextValue = Label2.Text;}

效果如圖:

(二)從用戶控件向頁面交換信息。代碼要寫用戶控件。

1.session
第一步:在用戶控件的按鈕中把數(shù)據(jù)放在Session中。

給button加click事件

protected void Button1_Click(object sender, EventArgs e){Session["text"] = TextBox1.Text;}

第二步:在頁面的OnLoadComplete事件中,從Session中取出數(shù)據(jù)來,顯示在頁面上。?

在頁面中重寫override函數(shù) onloadComplete

這樣在頁面加載完成后執(zhí)行下面的方法,判斷Session["text"]中如果沒有信息就什么也不執(zhí)行,注意第一行 base.OnLoadComplete(e)不能刪

protected override void OnLoadComplete(EventArgs e){base.OnLoadComplete(e);if (Session["text"]!=null){Label3.Text = Session["text"].ToString();}}

?

?

效果如圖:

?

2.代理、委托 delegate

指向方法(動(dòng)作)的引用。 Dog d = new Dog();
類比:類的使用 - 指向?qū)ο蟮囊?br />類的使用步驟:
第一步:用class 關(guān)鍵字定義一個(gè)類的類型
public class Dog
{
//成員變量定義
//成員屬性定義
//成員方法定義
}
第二步:使用這個(gè)新的類型定義一個(gè)變量(類的變量)引用。
Dog d;

第三步:把這個(gè)變量引用指向一個(gè)新對(duì)象。
d = new Dog();

第四步:通過調(diào)用引用,實(shí)現(xiàn)對(duì)對(duì)象的調(diào)用。
d.Name
d.Bark()

代理的使用步驟:
第一步: 使用 delegate 定義一個(gè)新的代理類型。
public delegate 返回類型 代理類型名( 參數(shù)定義);
例如:public delegate void ShowDelegate(string s);
第二步:使用新的代理類型定義一個(gè)變量(代理變量)
ShowDelegate Show;
第三步:把代理變量指向一個(gè)新的方法
Show = new ShowDelegate(方法名);
第四步:通過調(diào)用代理來實(shí)現(xiàn)對(duì)方法的調(diào)用。
Show("hello");

?案例:從一個(gè)用戶控件中向另一個(gè)用戶控件加添加節(jié)點(diǎn)

定義一個(gè)delegate代理ShowDelegate,然后生命一個(gè)代理實(shí)例化

public delegate void ShowDeletgate();//定義代理public ShowDeletgate Show;//實(shí)例化

給button寫click事件

protected void btnAddNode_Click(object sender, EventArgs e){if (Session["list"] == null){List<FlowPath> temp = new List<FlowPath>();Session["list"] = temp;}List<FlowPath> list = Session["list"] as List<FlowPath>;list = list.OrderBy(p => p.Orders).ToList();int order = 1;if (list.Count>0){order = list.Last().Orders.Value+1;}FlowPath data = new FlowPath();if (Request["rbnode"] != null)//判斷是否選擇了radio {data.Code = DateTime.Now.ToString("yyyyMMddhhmmss") + order + Session["uid"].ToString();data.EmpId = Request["rbnode"].ToString();data.Orders = order;list.Add(data);Session["list"] = list;if (Show != null)//調(diào)用代理,代理名不加括號(hào) {Show();//使用代理--類似于使用方法 }}else{Label1.Text = "請(qǐng)選擇要加載的節(jié)點(diǎn)";}
  }

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

public void ShowSession(){if (Session["list"]!=null){Repeater1.DataSource = Session["list"] as List<FlowPath>;Repeater1.DataBind();}}

給代理綁定方法--寫在加載的頁面上load里面,注意不要寫在if(!IsPostBack中)因?yàn)槊看渭虞d都需要綁定

綁定使用方法同屬性如:

UserList1.Show(show代理) = new UserList.ShowDeletgate(NodesShow1.ShowSession--這個(gè)ShowSession是個(gè)方法但是不加小括號(hào))

?

protected void Page_Load(object sender, EventArgs e){if (Session["uid"] == null){Response.Redirect("login.aspx");}if (!IsPostBack){}UserList1.Show = new UserList.ShowDeletgate(NodesShow1.ShowSession);//注意這里綁定方法的時(shí)候是 方法名 不帶小括號(hào)}

?

?

二.路徑:

1.控件路徑:圖片、超鏈接

使用服務(wù)端的控件。標(biāo)準(zhǔn)控件或者HTML標(biāo)記加上runat=server.

這樣服務(wù)端就會(huì)自動(dòng)轉(zhuǎn)換成正確的路徑出來。

如:

<img id="img1" runat="server" src="images/delete.png" />

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

?

?

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

不要使用內(nèi)聯(lián)樣式,使用外部樣式表來控制圖片路徑。

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

?

代碼如下:

.dd {background-image:url(../images/h.png); }

注意路徑必須正確:確保從樣式表可以找到對(duì)應(yīng)的路徑

然后,給需要加樣式表的標(biāo)簽一個(gè)class="dd"名(這里用的.dd給class 也可以給加id="dd"樣式表改為#dd)

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

?

?

?

3.外部資源路徑 - 用戶控件中引入外部腳本文件
使用 string path = ResoveClientUrl("服務(wù)器端路徑"); //返回的是客戶端對(duì)應(yīng)的路徑

首先在用戶控件上加<script></script>指定路徑寫一個(gè)函數(shù)?注意不是# 是=,如下

<script src="<%= ShowScriptPath() %>" ></script>

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

?

腳本代碼:

alert("這是外部腳本文件的內(nèi)容")

最后在cs代碼界面添加對(duì)應(yīng)的方法

?

public string ShowScriptPath(){string path = "Scripts/JavaScript.js";//外部樣式表存放路徑path = this.ResolveClientUrl(path);//重新解析為可識(shí)別的路徑return path;}

?

?

4.C#代碼的調(diào)用路徑
Response.Redirect("頁面");
使用應(yīng)用程序路徑的根來解決

在路徑前面加上一個(gè) ~ 符號(hào)--從跟目錄開始尋找
Response.Redirect("~/Default.aspx")

轉(zhuǎn)載于:https://www.cnblogs.com/liujiangping/p/4759051.html

總結(jié)

以上是生活随笔為你收集整理的.Net用户控件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。