控制元件開發學習筆記(一)——ToolboxData含義
新建一個ASP.NET伺服器控制元件專案,Visual Studio自動產生如下的程式碼:
namespace WebControlLibrary
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:HelloWorld runat=server></{0}:HelloWorld>")]
public class HelloWorld : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
}
剛開始接觸ASP.NET控制元件和元件開發,第1個疑問就是DefaultProperty 、ToolBoxData分別是什麼含義?
[DefaultProperty("Text")]
[ToolboxData("<{0}:HelloWorld runat=server></{0}:HelloWorld>")]
DefaultProperty是設定控制元件預設的屬性的。
ToolBoxData的意思是當你將這個控制元件從工具箱中拖放到WebForm中時在aspx檔案的HTML程式碼中新增的對該控制元件的定義。
這裡面的{0}表示什麼意思?
控制元件的標記的字首
就是你拖這個控制元件到頁面上時候
他就自動新增<{0}:HelloWorld runat=server></{0}:HelloWorld>,這個{0}是你定義的。
那究竟{0}如何定義呢?
修改Visual Studio自動產生的程式碼,增加下面的一行
[assembly: TagPrefix("WebControlLibrary", "aspNet")]
namespace WebControlLibrary
{
//其他程式碼不變
}
重新生成控制元件專案。
新建網站,把新生成的控制元件拖到新建的Web窗體上,切換到源檢視狀態,可以看到控制元件定義標記為:
<aspNet:HelloWorld ID="HelloWorld1" runat="server" />
其中的aspNet正是我們用[assembly: TagPrefix("WebControlLibrary", "aspNet")]定義的。
同時,在頁面上部可以看到如下的標記:
<%@ Register assembly="WebControlLibrary" namespace="WebControlLibrary" tagprefix="aspNet" %>
再查一下msdn,TagPrefixAttribute的基本使用:
public TagPrefixAttribute(
string namespaceName,
string tagPrefix
)
當然,自定義ASP.NET伺服器控制元件TagPrefix,也可以修改網站的Web.config檔案:
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="WebControlLibrary" namespace="WebControlLibrary" tagPrefix="AspNet"/>
</controls>
這樣,拖動控制元件到頁面上時,控制元件的tagPrefix為AspNet:
<AspNet:HelloWorld ID="HelloWorld1" runat="server" />
相關文章
- 開發asp.net自定義控制元件(asp.net學習筆記三) (轉)ASP.NET控制元件筆記
- 開發asp.net自定義控制元件(asp.net學習筆記四) (轉)ASP.NET控制元件筆記
- 開發asp.net自定義控制元件(asp.net學習筆記五) (轉)ASP.NET控制元件筆記
- Open CV 學習開發筆記之概述(一)筆記
- Rest API 開發 學習筆記RESTAPI筆記
- Android 開發學習筆記Android筆記
- ajax 學習筆記 updatepannel控制元件筆記控制元件
- repuest轉發學習筆記一筆記
- JAVA 學習併發筆記(一)Java筆記
- (一)Java併發學習筆記Java筆記
- ESP32 開發筆記(四)LVGL控制元件學習 3 Button 按鈕控制元件筆記控制元件
- NDK學習筆記-NDK開發流程筆記
- JS開發步驟學習筆記JS筆記
- Web開發學習筆記——HTTP 概述Web筆記HTTP
- U-boot開發學習筆記boot筆記
- Asp.net控制元件開發學習筆記(七)—-WebControl基類ASP.NET控制元件筆記Web
- 【Go學習筆記11】併發(一)Go筆記
- Kinect開發學習筆記之(二)Kinect開發學習資源整理筆記
- Java_EE企業級開發學習筆記——spring學習筆記第一章Java筆記Spring
- 學習筆記(一)筆記
- 步步學習自定義View:Hencoder 精簡版學習筆記(一)View筆記
- 一名Java開發的Go語言學習筆記(一)JavaGo筆記
- 微信小程式開發學習筆記[4]微信小程式筆記
- 微信小程式開發學習筆記[2]微信小程式筆記
- 微信小程式開發學習筆記[3]微信小程式筆記
- dubbo學習筆記---dubbo開發實戰筆記
- iOS-Socket開發學習筆記-1iOS筆記
- perl學習筆記--搭建開發環境筆記開發環境
- [Erlang 學習筆記] Erlang開發建議筆記
- R/3 ABAP開發學習筆記(轉)筆記
- springboot 開發學習筆記1Spring Boot筆記
- ESP32 開發筆記(四)LVGL控制元件學習 15 Keyboard 鍵盤控制元件 X筆記控制元件
- iOS學習筆記——基礎控制元件(上)iOS筆記控制元件
- <react學習筆記(9)>表單控制元件React筆記控制元件
- 『Material Design入門學習筆記』動畫(含demo)Material Design筆記動畫
- kitten 學習教程(一) 學習筆記筆記
- LaTeX學習筆記:一筆記
- ANFIS學習筆記(一)筆記