ASP.Net用户控件如何读取子节点

时间:2012-09-22 00:12:40

标签: asp.net user-controls

我有一个像这样定义的用户控件

<%@ Control .....

<Test:MyCustomControl id="xxx" runat="server>
</Test:MyCustomControl>

我想在

这样的页面上使用此控件
<Tag:MyControl runat="server">
  <div>
    my html
  </div>
</Tag...

在我的自定义控件代码隐藏中,我想阅读内部html并将其设置为Test的一个属性:MyCustomcontrol

目前我收到的错误是“......没有属性div”

我该怎么做?

注意:为了澄清内部html可以是一个任意的html,所以我需要一种方法来读取用户在页面中输入的任何内容。

2 个答案:

答案 0 :(得分:0)

您可以将div(在服务器上运行)作为UserControl的属性公开

在usercontrol html上:

<div id="dvSomething" runat="server"></div>

on ur usercontrol codebehind“.cs file”:

public System.Web.UI.HtmlControls.HtmlGenericControl TheDiv 
{
    get
    {
        return dvSomething;
    }
    set {
        dvSomething = value;
    }
}

在包含usercontrol的页面上:

WebUserControl11.TheDiv.InnerHtml = "addin something to div from page";
祝你好运

答案 1 :(得分:0)

如果有人需要不同的解决方案,我会保持另一个问题:

我不确定你的嘲笑,但这里有两个解决方案,我希望这是你想要的:

一个添加控件(你可以添加任何方式,不仅是文本框)和其他纯html按照你所描述的

TextBox txtAdd = new TextBox();
txtAdd.Style.Add("width", "200px");
WebUserControl11.Controls.Add(txtAdd);

TextBox txtRead = (TextBox)WebUserControl11.Controls[1];

((System.Web.UI.HtmlControls.HtmlGenericControl)WebUserControl11.Controls[0]).InnerHtml = "<b>something</b>";
string currentHtml = ((System.Web.UI.HtmlControls.HtmlGenericControl)WebUserControl11.Controls[0]).InnerHtml;

当然,索引会根据您在用户控件上的元素数量而改变