C# 按钮点击不';不要停止触发
我在ASP页面中有一个按钮,单击该按钮可将一些数据保存到SQL server。它按预期工作,除了在任何时候重新加载页面(当执行其他操作时),它会再次触发该按钮的提交。结果是数据库中出现重复记录。我意识到我可能可以验证是否存在重复项,但我担心的是,如果按钮仍在触发每次刷新时的单击,那么它会无缘无故地消耗资源 每次刷新时都会显示“要显示此页面,Firefox必须发送重复先前执行的任何操作(如搜索或订单确认)的信息。” 我已经搜索了codebehind、HTML和javascript文件的其余部分,以查找对button11的任何引用,但没有。我不明白为什么它一直在触发 按钮的HTML:C# 按钮点击不';不要停止触发,c#,html,asp.net,C#,Html,Asp.net,我在ASP页面中有一个按钮,单击该按钮可将一些数据保存到SQL server。它按预期工作,除了在任何时候重新加载页面(当执行其他操作时),它会再次触发该按钮的提交。结果是数据库中出现重复记录。我意识到我可能可以验证是否存在重复项,但我担心的是,如果按钮仍在触发每次刷新时的单击,那么它会无缘无故地消耗资源 每次刷新时都会显示“要显示此页面,Firefox必须发送重复先前执行的任何操作(如搜索或订单确认)的信息。” 我已经搜索了codebehind、HTML和javascript文件的其余部分,以
<asp:Button ID="button11" runat="server" OnClick="Button11_Click" />
编辑:我也知道bobby drop tables。这与具体的实现无关
编辑2:我忘了提到,只需单击刷新按钮就足以添加重复记录,而且它甚至不会给出表单提交警告(“要显示此页面,Firefox必须发送重复先前执行的任何操作(如搜索或订单确认)的信息。”)自从我参与ASP.NET WebForms(您的代码是WebForms,对吗?)项目以来,这一直是一个温热的时期,我不完全确定是否有任何关于您的情况的信息可以帮助您了解可能的错误,但我似乎还记得页面生命周期中的一些引人注目的事情,即设置为会话变量数据的数据不会重置为默认值,也不会在页面生命周期的后期代码事件方法将其持久化。您应该能够通过在这些不同事件中调试代码来检查这一点。如果不是这个问题,那么可能是页面生命周期中的其他吸引人的地方,而不是你所期望的那样
有一个很好的参考资料直接来自于源代码:,我认为自WebForms早期以来,页面已经有了显著的改进。HTH自从我参与ASP.NET WebForms(您的代码是WebForms,对吗?)项目以来,这一直是一个温热的时期,我不完全确定是否有任何关于您的情况的信息会对理解可能的错误产生影响,但我似乎还记得页面生命周期中的一些引人注目的事情,即设置为会话变量数据的数据不会重置为默认值,也不会在页面生命周期的后期代码事件方法将其持久化。您应该能够通过在这些不同事件中调试代码来检查这一点。如果不是这个问题,那么可能是页面生命周期中的其他吸引人的地方,而不是你所期望的那样
有一个很好的参考资料直接来自于源代码:,我认为自WebForms早期以来,页面已经有了显著的改进。这是默认的浏览器行为。 您向服务器发送的最后一个请求是按钮的POST请求。 刷新浏览器将重做最后一个请求,这将调用按钮单击事件 下面的链接帮助您解决问题:
这是默认的浏览器行为。 您向服务器发送的最后一个请求是按钮的POST请求。 刷新浏览器将重做最后一个请求,这将调用按钮单击事件 下面的链接帮助您解决问题:
听起来您好像在页面加载事件中以某种方式触发了按钮单击事件。你能发布你在那个事件中的任何代码吗?我对它的所有内容都进行了注释,它仍然会发生。听起来你好像是在某种程度上触发了页面加载事件中的按钮点击事件。你能在那个事件中发布你所有的代码吗?我对它的所有内容都做了注释,它仍然会发生。
protected void Button11_Click(object sender, EventArgs e)
{
var update = hfptstate.Value;
string fname = fnamebox.Text;
string lname = lnamebox.Text;
string sex = sexbox.Text;
string combname = fname + " " + lname;
string init = null;
string str = combname;
str.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToList().ForEach(i => init += i[0]);
init += "_";
Random rnd = new Random();
int id = rnd.Next(1, 10000);
string initid = init + id;
string phone = phonebox.Text;
string color = colorbox.Text;
string age = agebox.Text;
string datetime = DateTime.Now.ToString("MMM dd yyyy h:mmtt");
SqlConnection con = new SqlConnection("Data Source=localhost\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Public\\public website\\slDataBase.mdf;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
if (statuslabel.InnerText == "Adding New Record")
{
cmd = new SqlCommand("INSERT into precordTable VALUES ('" + fname + "','" + lname + "','" + combname + "', '" + initid + "' , '' , '" + sex + "', '" + phone + "', '" + color + "', '" + age + "', '" + datetime + "', '','')", con);
}
else if (statuslabel.InnerText == "Editing Existing Record")
{
cmd = new SqlCommand("update precordTable set fname='" + fname + "', lname='" + lname + "', name='" + combname + "' , sex='" + sex + "', phone='" + phone + "', color='" + color + "', age='" + age + "' where initid='" + update + "';", con);
}
con.Open();
cmd.ExecuteNonQuery();
con.Close();
statuslabel.InnerText = "Adding New Record";
fnamebox.Text = "";
lnamebox.Text = "";
sexbox.Text = "";
phonebox.Text = "";
colorbox.Text = "";
agebox.Text = "";
}