这是我在asp.net表单中的前端代码
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<span id="Message" runat="server"></span>
<span id="myid" runat="server">
</span>
</asp:Content>
这是我背后的代码
protected void Page_Load(object sender, EventArgs e)
{
myid.InnerHtml = myid.InnerHtml + "<asp:Button ID=" + dbLayer.AddDoubleQuotes("Button_Update") + " name=" + dbLayer.AddDoubleQuotes("Button_Update") + " runat=" + dbLayer.AddDoubleQuotes("server") + " class=" + dbLayer.AddDoubleQuotes("btn btn-success") + " OnClick=" + dbLayer.AddDoubleQuotes("Button_Update_Click") + " Text=" + dbLayer.AddDoubleQuotes("UpdateButton") + " />";
}
protected void Button_Update_Click(Object sender, EventArgs e)
{
Message.InnerHtml = "This Event Fired Sucessfully ...";
}
我正在使用Web方法进行双引号
[WebMethod]
public string AddDoubleQuotes(string value)
{
return "\"" + value + "\"";
}
无法获得按钮点击事件
你的回复对我很有帮助,我因此而陷入困境
答案 0 :(得分:1)
首先,您 不能 只是简单地将服务器控件呈现为ASP.Net Web窗体中的字符串文字。
动态添加服务器控件有点棘手,因为它们不在控制树中。您需要在 Page_Init 或 Page_Load 事件中使用相同ID重新加载它们。
<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
<asp:Label runat="server" ID="MessageLabel" />
protected void Page_Init(object sender, EventArgs e)
{
var button = new Button {ID = "Button1"};
button.Click += Button_Click;
PlaceHolder1.Controls.Add(button);
}
private void Button_Click(object sender, EventArgs e)
{
MessageLabel.Text = "Button is clicked!";
}
仅供参考: 尽可能使用ASP.Net Server控件而不是runat="server"
的常规html控件,除非您绝对确定不需要ViewState和这些服务器控件提供的一些额外功能。
答案 1 :(得分:0)
如果EnableViewState为false,则可以在回发上动态地重新填充具有不同控件的占位符控件。 ids并不重要。