asp 使用 c# 创建的按钮未显示

asp button created using c# isn't showing

我在 MyAdoHelperSQL.cs 中创建了一个 asp:Button,它应该出现在 adminRiddles.aspx 中,但是这个按钮没有出现。如果我在 运行 Google Chrome 中的代码时打开“检查”选项,我可以看到代码中 确实存在 这个按钮,但它没有出现。
我还在 adminRiddles.aspx 中创建了另一个具有完全相同代码的按钮(只是为了检查),这个按钮是可见的。
有什么问题?
我该如何解决?

代码:
MyAdoHelperSQL.cs

string printStr = "<div class='riddles'> <table>";
printStr += "<tr> <td> <asp:Button id='add"+idNum+ "' style='float:right; display:block;' runat='server' Text='confirm' Width='70px' OnClick='add_Click'></asp:button> </td> </tr> </table> </div>";
return printStr;

adminRiddles.aspx 使用 c# 函数调用上面的 MyAdoHelperSQL.cs 并将 printstr 字符串打印到形式。
这是工作按钮的代码:

    <form runat="server">
                <div class='riddles'>
                    <table>
                            <tr>
                                <td> 
        <asp:Button id='Button2' style='float:right; display:block;' runat='server' Text='confirm' Width='70px' OnClick='add_Click'></asp:button>
                                </td>
                            </tr>
                     </table>
                 </div>
    </form>

谢谢!

您不能像那样将 asp 控件作为原始文本注入,这适用于原始 HTML 但不适用于服务器端需要了解的控件。

最好的方法是将此控件动态添加为实际控件:

adminRiddles.aspx: 给 table 行和 td 一个 ID 并设置为 runat="server"

<div class='riddles' id="riddlesdiv" runat="server">
<table id="riddlestable" runat="server">
    <tr id="riddlestr" runat="server">
        <td id="riddlestd" runat="server">      
        </td>   
    </tr>
</table>
</div>

adminRiddles.aspx.cs:在代码中添加控件

Button addButton = new Button();
addButton.ID = "add" + idNum;
addButton.Text = "confirm";
addButton.Click += add_Click;
riddlestd.Controls.Add(addButton);

如果您有多行,您可能需要更进一步,动态添加 table 行及其内容。