程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 如何在用戶控件中傳遞屬性和方法(Reflection)

如何在用戶控件中傳遞屬性和方法(Reflection)

編輯:.NET實例教程

如何在用戶控件中傳遞屬性和方法?由於控件的執行在頁面執行之後,因此常常是無法獲取控件傳遞的值。如:上傳文件控件,如果做成用戶控件則在提交時無法獲取上傳的文件名,解決的方法是用反射機制(Reflection),定義用戶控件的屬性,用來傳值,定義用戶控件的方法,用來傳遞屬性值到調用頁面。

    頁面Page中Page_Load:

 //用Reflection(反射機制)獲取用戶控件的類型.此處為:ucType = {Name = "usctrlupload_ascx" FullName = "ASP.usctrlupload_ascx"} usctrlupload_ascx是用戶控件名對應的名稱,是從調試中復制。

        Type ucType = UsCtrlUpload1.GetType ();

        //用PropertyInfo獲取用戶控件中的屬性.

        PropertyInfo UctextName= ucType.GetProperty("PicName");// PicName是用戶控件中的屬性,定義如後附。

        //設置和獲取用戶控件中的值.

        UctextName.SetValue(UsCtrlUpload1,"123456",null );//用PropertyInfo實例的方法測試賦值。只是測試一下設置值的效果,主要的是下面如何獲取控件的屬性值。

        Label2.Text = UctextName.GetValue (UsCtrlUpload1,null ).ToString ();//UsCtrlUpload1用戶控件ID。

 

        //這樣也可以獲取和設置控件中的屬性值.但好象不穩定,時行時不行的.

        Label2.Text = UsCtrlUpload1.PicName;

頁面Page的Button事件中:

    protected void Button1_Click(object sender, EventArgs e)

    {

        Type ucType = UsCtrlUpload1.GetType();

        //用MethodInfo類來獲取用戶控件中的方法.

        MethodInfo UcMethod = ucType.GetMethod("Button1_Click");// Button1_Click控件中的方法。

        //在此處頁面的方法中執行用戶控件中的方法.

        object[] argumentArrray = new object[2];

        UcMethod.Invoke(UsCtrlUpload1, argumentArrray);//調用用戶控件中的方法。此處執行了!!。

 

        PropertyInfo UctextName = ucType.GetProperty("PicName");

        Label2.Text = UctextName.GetValue(UsCtrlUpload1, null).ToString();//獲取了上傳的文件名信息。並顯示在page頁面上。

       

        //這樣也可以獲取和設置控件中的屬性值.但好象不穩定,時行時不行的.

        //Label2.Text = UsCtrlUpload1.PicName;

    }

附:

用戶控件.cs文件中定義的屬性:

    public string PicName

    {

        get { return Label2.Text; }

        set { Label2.Text = value; }

}

用戶控件.cs文件中定義的方法:

    public void Button1_Click(object sender, EventArgs e)

    {

        if (FileUpload1.HasFile)

        {

            Label2.Text = FileUpload1.PostedFile.FileName;

        }

注:此處借用了Button的事件方法,完全可以隨意改。並且控件中沒有Button,Button是放在頁面中的。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved