asp按钮添加跨度不触发点击事件

时间:2017-02-06 23:29:58

标签: c# asp.net

这是我在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 + "\"";
}

无法获得按钮点击事件

你的回复对我很有帮助,我因此而陷入困境

2 个答案:

答案 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并不重要。