1

我有一个字符串存储在 DB 中"<asp:panel id='test' runat='server' ></asp:panel>"。我正在尝试获取这些数据并put it in a div which have runat="server" in it using innerHtml property.

protected void Page_Load(object sender, EventArgs e)
{
    Layouts.InnerHtml = GetTemplate();
}

public string GetTemplate()
{
    CompassModel.Layout Layout;
    using (CompassEntities db = new CompassEntities())
    {
        Layout = (from q in db.Layouts
                        where q.LayoutID == 1
                        select q).SingleOrDefault();
    }

    return Layout.LayoutHTML;
}

当我尝试使用findcontrol()方法访问这个动态添加的面板时,它返回 null。

有什么方法可以渲染它以便我可以在运行时访问面板?

4

1 回答 1

3

您必须将 asp 服务器控件视为对象而不是标记。将对象呈现为 html 后,标记由 .net 处理。

因此,仅将 .net 标记添加到页面不会给您想要的效果。

您需要做的是创建一个新的面板对象并将其添加到占位符、面板或任何其他允许您添加到其集合中的控件的控件集合中。

这是我正在谈论的一个例子

pnlContainer.Controls.Add(new Panel{ID = "test"});

于 2013-10-15T13:41:16.577 回答