从 InnerHTML 中的代码隐藏向页面添加 ASP 控件

Posted

技术标签:

【中文标题】从 InnerHTML 中的代码隐藏向页面添加 ASP 控件【英文标题】:Adding a ASP Control to page from Code Behind within InnerHTML 【发布时间】:2013-12-01 22:10:15 【问题描述】:

我正在尝试从后面的代码向网页添加一个按钮。我的主页上有一个空 div,需要时可以打开和关闭。但是,我希望动态创建的内容,因为 div 内容可以根据条件而变化。

我意识到在我的 ASP 控件中我使用了 /(反斜杠)来取消我的 html。我现在遇到的问题是了解如何使用代码解决这个问题,有没有办法将 ASP 控件添加到网页?我愿意接受 InnerHtml 之外的建议。

我正在像这样创建我的按钮(在我的代码后面):

      string buttonout = string.Format("<asp:Button ID=\"helpButton_0\" CommandArgument=\"0\" CssClass=\"HelpButton\" runat=\"server\" Text=\"?\"/>");
      innercontent[0] = string.Format("<table><tr><td>Lead Passenger Information</td></tr><tr><td>Here by deafaul we used your detaisl from your profile, if you're not the lead passenger (As in you're booking for someone else) then please change details.</td></tr><tr><td>0</td></tr></table>"+ buttonout);

如上所述,我认为这不起作用的原因是 InnerHtml 讨厌反斜杠。

我确实有办法解决这个问题;那就是向页面添加更多的 div。

        <div id="HelpBoxDiv" runat="server" Visible="false">
            <div id="HelpBoxDiv_Top" runat="server" Visible="true">
            </div>
            <div id="HelpBoxDiv_Bottom" runat="server" Visible="true">
                <asp:Button ID="button_HelpBox_false" runat="server" />
            </div>
        </div>

然后我会将我的 Innerhtml 添加到 _Top Div,而不是我现在正在做的 HelpBoxDiv。然而,这个解决方案并没有教给我任何东西。

我很犹豫在这里问问题,因为我知道已经问了很多问题,而且我相信这个问题以前也有,但我没有找到解决方案。非常感谢任何帮助。

谢谢。

【问题讨论】:

我讨厌人们只链接我的 MSDN 文章,但这些对于您需要做的事情应该非常有用。您可以通过编程方式创建在设计时可用的每个控件。这些链接应该向您展示如何操作,而不是在 HTML 标记中插入 HTML 字符串。 msdn.microsoft.com/en-us/library/kyt0fzt1(v=vs.110).aspxmsdn.microsoft.com/en-us/library/… 我真的不介意,您的评论无疑会让我找到更清洁的解决方案。 如果您有任何问题,请发表评论,我稍后会尝试回复此问题,目前正在工作:) 【参考方案1】:

我意识到在我的 ASP 控件中我使用了 /(反斜杠) 取消了我的 HTML。我现在遇到的问题是了解我如何能够 用代码解决这个问题,有没有办法将 ASP 控件添加到 网页?我愿意接受 InnerHtml 之外的建议。

您不能像文字字符串那样添加 ASP.Net 服务器控件。

相反,您希望将动态服务器控件添加到以下方法 -

ASPX

<asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder>

代码隐藏

protected void Page_Init(object sender, EventArgs e)

    var button = new Button
    
        ID = "helpButton_0",
        CommandArgument = "0",
        CssClass = "HelpButton",
        Text = "?"
    ;
    button.Command += button_Command;
    PlaceHolder1.Controls.Add(button);


private void button_Command(object sender, CommandEventArgs e)

    // Handle dynamic button's command event.

【讨论】:

以上是关于从 InnerHTML 中的代码隐藏向页面添加 ASP 控件的主要内容,如果未能解决你的问题,请参考以下文章

将 innerhtml 添加到顶部链接

将控件添加到表格内的innerhtml div

如何获取由javascript设置的网页的隐藏InnerHtml?

为啥添加innerHTML后循环和数组停止工作?

用 innerHTML 添加 php 代码

jquery 怎么让一个div的内容未加载完时显示加载中...