从自定义控件的代码隐藏中检索aspx的html内容

时间:2013-05-23 02:30:39

标签: c# asp.net user-controls

我有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>)的内容。

谁能帮帮我?感谢。

1 个答案:

答案 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")