Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ajax和简单按钮事件处理程序不工作_C#_Asp.net_Ajax_Dynamic - Fatal编程技术网

C# Ajax和简单按钮事件处理程序不工作

C# Ajax和简单按钮事件处理程序不工作,c#,asp.net,ajax,dynamic,C#,Asp.net,Ajax,Dynamic,我在Ajax和C#asp.net方面遇到了问题。我正在使用Microsoft Visual Studio 2010 首先让我解释一下我的网页 我有脚本管理器,在它的正下方有一个更新面板 这是我一直在摆弄的动态占位符 在我的更新面板中,我有一个动态控件&一个按钮 <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <asp:ScriptManager ID="S

我在Ajax和C#asp.net方面遇到了问题。我正在使用Microsoft Visual Studio 2010

首先让我解释一下我的网页

我有脚本管理器,在它的正下方有一个更新面板

这是我一直在摆弄的动态占位符

在我的更新面板中,我有一个动态控件&一个按钮

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ScriptManager ID="ScriptManager1" runat="server" >
    </asp:ScriptManager>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">

        <ContentTemplate>
                <DBWC:DynamicControlsPlaceholder ID="DynamicControlsPlaceholder1" 
    runat="server">
            </DBWC:DynamicControlsPlaceholder>
            <br />

             <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

        </ContentTemplate>

        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
        </Triggers>

    </asp:UpdatePanel>

</asp:Content>
*注意:我使用的是定制的动态控制面板,所以他们的ID会保存到下一页,即使我们在一个!Page.IsPostBack

问题是我的按钮事件处理程序只工作一次。我很确定这是因为Ajax正在调用一个部分回发,并且它无法识别调用我的按钮事件处理程序


我不确定,任何帮助都是值得的。

Firebug在调试ajax方面发挥了神奇的作用。“有多个控件具有相同的ID“5”。”

多么简单的修复。移动
id++
按钮1的顶部,单击事件处理程序

如果您假设ajax仅仅因为事件处理程序中没有触发断点而破坏了事件处理程序,firebug也可能会救您


事件处理程序绝对没有问题,但其中的代码导致了错误,ajax不允许它中断

请注意您的标记选择,特别是当您选择
asp
标记时弹出的大“请勿使用”文本。@Joel Coehoorn对此表示抱歉。谢谢你的编辑。我以后会更加小心。只是为了确保——你怎么知道按钮的点击只会触发一次?你在那里放了断点吗?@sq33G是的,我放了。在第三次单击时,它不会中断。您是否使用了类似fiddler的方法来验证服务器的响应是否不包含错误?如果它解决了您的问题,您应该将此标记为答案。
protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            ViewState["id"] = 0;
        int id = (int)ViewState["id"];

        for (int i = 0; i < 5; i++)
        {
            id++;
            TextBox txt = new TextBox();
            txt.ID = id.ToString();
            DynamicControlsPlaceholder1.Controls.Add(txt);
            txt.Text = i.ToString();
        }
        ViewState["id"] = id;
        }

    }
protected void Button1_Click(object sender, EventArgs e)
    {


        int id = (int)ViewState["id"];

        TextBox txt = new TextBox();
        txt.ID = id.ToString();
        DynamicControlsPlaceholder1.Controls.Add(txt);
        // DynamicControlsPlaceholder1.DataBind();
        txt.Text = id.ToString();

        id++;
       ViewState["id"] = id;

    }