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



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

<%@ Control .....
<Test:MyCustomControl id="xxx" runat="server>
</Test:MyCustomControl>

我想在类似

<Tag:MyControl runat="server">
  <div>
    my html
  </div>
</Tag...

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

目前我收到一个错误,说"...没有属性div"

我该怎么做?

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

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

在用户控件 HTML 上:

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

在用户控件代码隐藏".cs文件"上:

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

在包含用户控件的页面上:

WebUserControl11.TheDiv.InnerHtml = "addin something to div from page";

祝你好运

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

我不确定您的要求,但这里有两个解决方案,我希望这就是您想要的:

一个添加控件(顺便说一下,您可以添加任何控件,而不仅仅是文本框)和其他纯 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;

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

最新更新