C# Ajax和简单按钮事件处理程序不工作
我在Ajax和C#asp.net方面遇到了问题。我正在使用Microsoft Visual Studio 2010 首先让我解释一下我的网页 我有脚本管理器,在它的正下方有一个更新面板 这是我一直在摆弄的动态占位符 在我的更新面板中,我有一个动态控件&一个按钮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
<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;
}