我有一个从模板表中提取数据的下拉列表。我有一个添加按钮来插入新模板。添加按钮将弹出jQuery弹出窗口以插入新值。将有一个保存按钮来保存新数据。 On_Save_Click我输入新数据并关闭弹出窗口。
这是问题: 当我刷新页面时,页面再次输入值。所以,我得到重复的条目!
问题: 我该如何避免这个问题?我查看了Satckoverflow和Google,他们建议重定向到另一个页面。我不想将用户重定向到另一个页面。如何使用相同的表单来避免此问题?请帮忙。
答案 0 :(得分:4)
您可以使用viewstate或session来指示数据是否已插入(按下按钮)。
这样的事情:
private void OnbuttonAdd_click()
{
if(ViewState["DataInserted"] != "1")
{
...
// Add new entry...
...
if(data inserted successfully)
{
ViewState["DataInserted"] = "1";
}
}
}
修改强>
public bool DataInserted
{
get
{
if (HttpContext.Current.Session["DataInserted"] == null)
{
HttpContext.Current.Session["DataInserted"] = false;
}
bool? dataInserted = HttpContext.Current.Session["DataInserted"] as bool?;
return dataInserted.Value;
}
set
{
HttpContext.Current.Session["DataInserted"] = value;
}
}
...
private void OnbuttonAdd_click()
{
if(!DataInserted)
{
...
// Add new entry...
...
if(data inserted successfully)
{
DataInserted = true;
}
}
}
答案 1 :(得分:3)
最简单的方法是使用post/redirect/get pattern。
基本上,带有post的页面构建的刷新操作需要重新发布数据。使用此模式,您将重新加载整个页面。
使用ASP.Net,你有一个简单的选择,使用UpdatePanel
。这将使用AJAX仅刷新页面的一部分。由于页面本身仍然是GET请求的结果,因此您可以刷新页面。当你使用ASP.Net时,它很容易集成。
最后,您可以使用自制的AJAX刷新。 jQuery,KnockOut和其他服务(例如)的组合可以帮助您避免在ajax调用的好处中刷新整个页面。
答案 2 :(得分:1)
这样做非常简单有效
在页面加载()中给出IsPostBack的Intead,请在按钮内单击提供(发送或插入数据)
protected void Btn_Reg_Click1(object sender, EventArgs e)
{
try
{
if (IsPostBack)
{
Registration_Save();
Send_Mail();
txtEmail.Text = "";
txtname.Text = "";
Response.Redirect("~/index.aspx");
}
}
catch (Exception) { }
}
刷新页面后,您将看不到任何服务器消息..
答案 3 :(得分:1)
有一些经验:
......我希望有用......