0

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

<%@ Control .....

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

我想在像这样的页面上使用这个控件

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

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

目前我收到一条错误消息,说“...没有属性 div”

我怎样才能做到这一点?

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

4

2 回答 2

0

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

在用户控件 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";

祝你好运

于 2012-09-22T00:22:15.523 回答
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;

当然,索引会根据用户控件上有多少元素而改变

于 2012-09-22T01:54:44.513 回答