创建模板化用户控件问题。

stning 2010-02-22 02:13:47
<%@ Control language="C#" ClassName="TemplatedUC" %>
<script runat=server>
private ITemplate messageTemplate = null;

[ TemplateContainer(typeof(MessageContainer)) ]
public ITemplate MessageTemplate {
get
{
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()
{
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>

按照msdn的。http://msdn.microsoft.com/zh-cn/library/36574bf6(VS.80).
就出错。报不具有名为MessageTemplate的公共属性
...全文
74 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
presto1981 2010-11-25
  • 打赏
  • 举报
回复
是不是用户控件路径出错了呢

<%@ Register TagPrefix="EHR" TagName="Contact" Src="~/patients/usercontrols/ucPatientInfo.ascx" %>
<%@ Register TagPrefix="ERH" TagName="PatientSubTab" Src="usercontrols/ucPatientSubTab.ascx" %>

下面的就可能出错
stning 2010-02-22
  • 打赏
  • 举报
回复
引用 9 楼 wlovew 的回复:
更正
引用 8 楼 wlovew 的回复:试了试.结果如下在设计界面显示:usercontrol不具有messagetemplate公共属性.运行后可以显示.
确实是这样。不知道为什么在设计界面的时候就会说是出错。很是郁闷。想不明白~
wlovew 2010-02-22
  • 打赏
  • 举报
回复
更正
引用 8 楼 wlovew 的回复:
试了试.结果如下
在设计界面显示:usercontrol不具有messagetemplate公共属性.运行后可以显示.
wlovew 2010-02-22
  • 打赏
  • 举报
回复
试了试.结果如下
在设计界面显示没有显示usercontrol不具有messagetemplate公共属性.运行后可以显示.
stning 2010-02-22
  • 打赏
  • 举报
回复
up。。。。。。。。。。。。。。。。。。
stning 2010-02-22
  • 打赏
  • 举报
回复
up。。。。。。。。。。。。。。。。。。。
stning 2010-02-22
  • 打赏
  • 举报
回复
引用 3 楼 freeflying1222 的回复:
我试过了,没问题呀!

第一段代码,要放在名为TemplatedUC.ascx的用户控件文件里;
第二段代码,是放在aspx页面的;

检查一下。两端代码都没有codebehind,把.cs文件删掉吧(不删也没问题)。
奇怪,我弄了就不行。
freeflying1222 2010-02-22
  • 打赏
  • 举报
回复
我试过了,没问题呀!

第一段代码,要放在名为TemplatedUC.ascx的用户控件文件里;
第二段代码,是放在aspx页面的;

检查一下。两端代码都没有codebehind,把.cs文件删掉吧(不删也没问题)。
stning 2010-02-22
  • 打赏
  • 举报
回复
up。。。。。。。。。。。。。。。
stning 2010-02-22
  • 打赏
  • 举报
回复
麻烦做过的同学帮忙看看

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧