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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebUserControl归纳

發(fā)布時間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebUserControl归纳 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

看了好多人都寫了用戶控件方面的文章,俺自己也來一篇總結(jié),這應(yīng)該不算抄襲吧,嘿嘿!!

新建一個用戶控件:

右擊項(xiàng)目添加新項(xiàng),彈出如下圖所示界面,選擇web用戶控件;

為用戶控件添加屬性:

public string UserName{get{return txtUserName.Text;}set{txtUserName.Text = value;}}

編譯之后在客戶端我們就可以訪問到這個UserName屬性,對其進(jìn)行賦值取值操作,在客戶端的用戶控件屬性一欄看到被公開的UserName屬性:

?

當(dāng)然我們也可以不以公開屬性的方式與外界交互,我們可以在客戶端通過FindControl的方式直接操作用戶控件內(nèi)部的控件;

為用戶控件添加事件:

這樣可以在客戶端方便操作:

?

public partial class WebUserControl : System.Web.UI.UserControl {public delegate void submithandler(object sender,EventArgs e);public event submithandler MySubmitEvent;protected void Page_Load(object sender, EventArgs e){}public string UserName{get{return txtUserName.Text;}set{txtUserName.Text = value;}}protected void Button1_Click(object sender, EventArgs e){if (MySubmitEvent != null){MySubmitEvent(this, e);}}}

首先定義了一個委托(這里叫submithandler),他有兩個參數(shù)(也可以不定義參數(shù),參數(shù)可以用于傳遞數(shù)據(jù)),

?

然后定義了一個委托變量的事件MySubmitEvent;

最后在當(dāng)前的事件中判斷事件是否被訂閱,如果有訂閱者,則觸發(fā)這個事件,這個被公開的事件的訂閱是被放在客戶端的,由客戶端定義事件的回調(diào)函數(shù)(我覺得叫回調(diào)函數(shù)挺容易理解的,不知道這么叫對不對?);

這樣用戶控件的兩個與外界交互的重要方式就搞定了,在使用用戶控件的時候還有一個地方需要注意,就是用戶控件內(nèi)部的控件的ID在客戶端會解析為用戶控件ID_子控件ID的形式,

所以在用客戶端腳本操作

他們的時候需要用到一個重要的屬性ClientID;

?

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %> <asp:Literal ID="Literal1" runat="server">用戶名:</asp:Literal><asp:TextBox ID="txtUserName" runat="server"></asp:TextBox><br /> <asp:Literal ID="Literal2" runat="server">密碼:</asp:Literal><asp:TextBox ID="txtPassWord" runat="server"></asp:TextBox><br /> <asp:Button ID="Button1" runat="server" Text="獲取用戶名" οnclick="Button1_Click" /> <input id="Button2" type="button" value="input方式獲取用戶名" onclick ="ShowName()" /> <script type ="text/javascript" >function ShowName() {alert(document.getElementById("<%=txtUserName.ClientID%>").value);} </script>

這里txtUserName為用戶控件內(nèi)部的一個子控件的ID,txtUserName.ClientID是獲取用戶控件在客戶端解析之后的最終ID,而<%=txtUserName.ClientID%>得意思就是在asp.net頁面執(zhí)行這段服務(wù)器端代碼

當(dāng)然對于ClientID的重要還表現(xiàn)在模板以及模板控件的使用上;

執(zhí)行之后就輸出在這個位置供腳本代碼使用;

向客戶頁面添加用戶控件:

1.打開需要用到用戶控件的頁面的設(shè)計(jì)界面,直接將用戶控件拖入指定的位置,這樣的話VS會自動的把必要地引用自動幫助我們加上,在源碼也拖是沒有效果哦;

2.就是手動的敲出那些引用;


使用用戶控件:

上面我們已經(jīng)為用戶控件公開了屬性和事件,現(xiàn)在我們就在客戶端使用這些東西;

?

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;public partial class _Default : System.Web.UI.Page {protected void Page_Load(object sender, EventArgs e){//WebUserControl1.UserName = "謝龍寶";TextBox txt=WebUserControl1.FindControl("txtUserName")as TextBox;txt.Text = "謝龍寶";WebUserControl1.MySubmitEvent += new WebUserControl.submithandler(WebUserControl1_MySubmitEvent);}void WebUserControl1_MySubmitEvent(object sender, EventArgs e){Response.Write(WebUserControl1.UserName);}}

屬性的使用時很簡單的,像使用普通的屬性一樣取值呀賦值呀,通過FindControl的方式直接操作;

?

至于事件的使用則也水到渠成,上面說了事件的訂閱時放在客戶端的,所以這里我們就在客戶頁面的加載時訂閱事件(可以理解為給事件指定了一個處理函數(shù)(回調(diào)函數(shù)))

?

參考博客

轉(zhuǎn)載于:https://www.cnblogs.com/LittleFeiHu/archive/2011/01/29/1947559.html

總結(jié)

以上是生活随笔為你收集整理的WebUserControl归纳的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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