在InnerHTML中从Code Behind添加ASP控件到页面

时间:2013-11-18 16:51:32

标签: c# html asp.net controls innerhtml

我正在尝试从后面的代码中添加一个按钮到网页。我的主页上有一个空的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。然而,这个解决方案并没有教给我任何东西。

我在这里提出问题犹豫不决,因为我知道有很多问题已被提出,而且我确信这个问题已经存在,但我没有找到解决方案。非常感谢任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:3)

  

我已经意识到在我的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.
}