我有2个文件,Test.aspx和MyControl.ascx。
在Test.aspx的html中:
<MyControl>
<MyTemplate>
<div>sample text, other controls</div>
</MyTemplate>
</MyControl>
在MyControl.ascx.cs中:
[ParseChildren(ChildrenAsProperties=true)]
[PersistChildren(true)]
public class MyControl:Control
{
[Browsable(true)]
public ITemplate MyTemplate{ get; set; }
protected override void OnLoad(EventArgs e)
{
//get the template html, but how to get???
var templateHtml = this.MyTemplate.ToString();
}
}
我想从MyControl.ascx.cs中的代码隐藏中获取<MyTemplate>
标记(<div>sample text, other controls</div>
)的内容。
谁能帮帮我?感谢。
答案 0 :(得分:2)
您需要将div
作为服务器端控件:
<MyControl>
<MyTemplate>
<div runat="server" id="divContent">sample text, other controls</div>
</MyTemplate>
现在,在你的代码背后,取决于这个控件是什么类型以及div是如何呈现的,你应该能够做一些喜欢这个:
var innerHtml = yourControl.FindControl("divContent").InnerHtml;
同样,这取决于div的呈现方式。如果它在一行内(假设您的控件是某种类型的列表),那么您需要获得对该行的引用,然后在该行上调用FindControl("divContent")
。