å¯ä»¥å‰µ(chuà ng)建實ç¾(xià n)模æ¿çš„用戶控件,這是 ASP.NET çš„ä¸€é …åŠŸèƒ½ï¼Œå®ƒå…許將控件數(shù)據(jù)與其表示形å¼ç›¸åˆ†é›¢ã€‚模æ¿åŒ–æŽ§ä»¶ä¸æä¾›ç”¨æˆ¶ç•Œé¢ã€‚編寫它則是為了實ç¾(xià n)一個命å容器以åŠåŒ…å«å±¬æ€§å’Œæ–¹æ³•å¯ç”±å®¿ä¸»é 訪å•的類。
用戶控件的用戶界é¢ç”±é é¢é–‹ç™¼(fÄ)人員在è¨è¨ˆæ™‚æä¾›ã€‚開發(fÄ)人員創(chuà ng)建由用戶控件定義的類型模æ¿ï¼Œç„¶åŽå¯ä»¥å‘æ¨¡æ¿æ·»åŠ æŽ§ä»¶å’Œæ¨™è¨˜ã€‚
創(chuà ng)建模æ¿ç”¨æˆ¶æŽ§ä»¶åœ¨ .ascx 文件ä¸ï¼Œæ·»åŠ è¦åœ¨å…¶ä¸é¡¯ç¤ºæ¨¡æ¿çš„ ASP.NET PlaceHolder 控件。
在用戶控件的代碼ä¸ï¼Œå¯¦ç¾(xià n) ITemplate 類型的屬性。
將實ç¾(xià n) INamingContainer 接å£çš„æœå‹™å™¨æŽ§ä»¶é¡žå®šç¾©ç‚ºè¦åœ¨å…¶ä¸å‰µ(chuà ng)建模æ¿å¯¦ä¾‹çš„容器。æ¤å®¹å™¨å«å𿍡æ¿çš„命å容器。
注æ„
æ¤æŽ§ä»¶å¯¦è³ªä¸Šæˆäº†ç”¨æˆ¶æŽ§ä»¶çš„åµŒå¥—é¡žï¼Œä½†é€™ä¸æ˜¯å¿…需的。
å°‡ TemplateContainerAttribute 應用于實ç¾(xià n) ITemplate 的屬性 (property),并將模æ¿å‘½åå®¹å™¨çš„é¡žåž‹ä½œç‚ºåƒæ•¸(shù)傳éžçµ¦å±¬æ€§ (attribute) çš„æ§‹é€ å‡½æ•¸(shù)。
在控件的 Init 方法ä¸ï¼Œå°‡ä»¥ä¸‹æ¥é©Ÿé‡å¾©ä¸€æ¬¡æˆ–多次:
創(chuà ng)建命å容器類的一個實例。
在命å容器ä¸å‰µ(chuà ng)建該模æ¿çš„一個實例。
將命åå®¹å™¨å¯¦ä¾‹æ·»åŠ åˆ° PlaceHolder æœå‹™å™¨æŽ§ä»¶çš„ Controls 屬性。
注æ„
從使用用戶控件的é é¢çš„角度來看,模æ¿åŒ–用戶控件的語法與自定義模æ¿åŒ–控件的語法相åŒã€‚
示例
下é¢çš„示例演示一個模æ¿åŒ–用戶控件和一個包å«è©²æŽ§ä»¶çš„é é¢ã€‚該用戶控件創(chuà ng)建一個å¯åœ¨å®¿ä¸»é ä¸Šè²æ˜Žç‚º <MessageTemplate> 的模æ¿ã€‚è©²æ¨¡æ¿æŽ§ä»¶é‚„å…¬é–‹å…©å€‹å¯ç”±å®¿ä¸»é 在模æ¿å…§(nèi)訪å•的屬性:Index å’Œ Message。
第一個示例顯示模æ¿åŒ–用戶控件。第二個示例顯示包å«è©²ç”¨æˆ¶æŽ§ä»¶çš„é é¢ã€‚
<%@ Control language="C#" ClassName="TemplatedUC" %>
<script runat=server>
private ITemplate messageTemplate = null;
[ TemplateContainer(typeof(MessageContainer)) ]
public ITemplate MessageTemplate {
get
{ www.yzjxsp.com
return messageTemplate;
}
set
{
messageTemplate = value;
}
}
void Page_Init() {
if (messageTemplate != null) {
String[] fruits = {"apple", "orange", "banana", "pineapple" };
for (int i=0; i<4; i++)
{
MessageContainer container = new MessageContainer(i, fruits[i]);
messageTemplate.InstantiateIn(container);
PlaceHolder1.Controls.Add(container);
}
}
}
public class MessageContainer: Control, INamingContainer {
private int m_index;
private String m_message;
internal MessageContainer(int index, String message)
{
m_index = index;
m_message = message;
}
public int Index {
get
{
return m_index;
}
}
public String Message
{
get
{
return m_message;
}
}
}
</script>
<asp:placeholder runat=server id="PlaceHolder1" />
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc" tagname="TemplateTest"
Src="TemplatedUC.ascx" %>
<html>
<script runat=server>
protected void Page_Load()
{ www.yzjjx.com
DataBind();
}
</script>
<head>
<title>Templated User Control Test</title>
</head>
<body>
<h1>Testing Templated User Control</h1>
<form id="Form1" runat=server>
<uc:TemplateTest runat=server>
<MessageTemplate>
Index: <asp:Label runat="server" ID="Label1"
Text='<%# Container.Index %>' />
<br />
Message: <asp:Label runat="server" ID="Label2"
Text='<%# Container.Message %>' />
<hr />
</MessageTemplate>
</uc:TemplateTest>
</form>
</body>
</html>
if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 56011; var cb_entryId = 1952929; var cb_blogApp = "haosola"; var cb_blogUserGuid = "28d7057a-c53a-de11-9510-001cf0cd104b"; var cb_entryCreatedDate = '2011/2/13 1:09:00';
昆明軟件開發(fÄ)å…¬å¸ä¸çš„佼佼者,致力定制軟件開發(fÄ),昆明軟件開發(fÄ)è«‹è¯(lián)系昆明葵宇科技有é™å…¬å¸ï¼Œé›»è©±ï¼š15987118523。