在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) { } } } |