在Asp.net中為用戶控件(.ascx)添加自定義屬性詳解


在Asp.net中為用戶控件(.ascx)添加自定義屬性詳解

   
用戶控件應該是大家經常用到的一種控件。雖說它沒有自定義控件的那么靈活,可以布署到任何的項目中。但在固定的項目中,使用用戶控件還是非常方便的,也可以快速提高我們的工作效率。本人現在的項目中也是使用了大量的用戶控件。

大部分的自定義控件的功能,在用戶控件中也能實現。
一、本章我們主要講解如何在用戶控件中添加自定義屬性。
二、下章我們講解如何在用戶控件中添加類似於DropDownList的下拉屬性。
三、再下章我們講解如何在用戶控件中添加自定義事件。
敬請持續關注本站。

閑話少說,開始我們的用戶控件開發之旅吧。
一、簡單屬性
新建一個用戶控件WebUserControl1.ascx,然后在WebUserControl1.ascx控件中拖放一個TextBox,如果到此為止不再為WebUserControl1.ascx控件添加任何代碼,那么在WebUserControl1.ascx之外我們是沒有辦法給這個TextBox賦值的。

新建一個aspx頁,把該控件拖放到該頁中,然后右鍵查看該控件的屬性,如下圖:


如果我們要實現在aspx頁中為WebUserControl1.ascx控件的TextBox的Text賦值,就得將TextBox的Text屬性公開出來。這就是為用戶控件添加簡單屬性。
注意:我們這里指的是屬性,而不是字段。而且,這個屬性必須是Public的,才能在控件外訪問到。
添加屬性如下:
using System;

namespace WebApplication1
{
    public partial class WebUserControl1 : System.Web.UI.UserControl
    {
//這個就是簡單屬性
        public string Text
        {
            get { return this.TextBox1.Text}   
            set { this.TextBox1.Text = value; }         
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

這樣,我們就可以在aspx頁中訪問到Text屬性了,再在aspx中右鍵查看該控件的屬性,如下圖,就可以看到Text屬性並為它賦值了。


二、枚舉屬性
簡單屬性,只能自己輸入值,我們如何實現在aspx的源碼中敲出屬性的名稱然后vs自動帶出該屬性的所有值呢?這個就是枚舉屬性。

要實現枚舉屬性,首先要聲明一個枚舉作為該屬性的值。
現在假設我們現在要為WebUserControl1.ascx控件添加一個Color屬性,該屬性包含Red,Green,White三個屬性值。
先聲明該枚舉:
public enum TextColor
{
    Red,
    Green,
    White
}

然后添加枚舉屬性:
public TextColor Color
{
    get;
    set;
}

這樣,我們在aspx頁中敲出Color屬性時就會自動帶出Red,Green,White三個可選值了。WebUserControl1.ascx控件的屬性也變成如下:


以上示例的全部源碼如下:
using System;
namespace WebApplication1
{
    public partial class WebUserControl1 : System.Web.UI.UserControl
    {
        public enum TextColor
        {
            Red,
            Green,
            White
        }

        //這是簡單屬性
        public string Text
        {
            get { return this.TextBox1.Text; }
            set { this.TextBox1.Text = value; }
        }

        //這是枚舉屬性
        public TextColor Color
        {
            get;
            set;
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM