我有一个从模板表中提取数据的下拉列表。我有一个添加按钮来插入新模板。添加按钮将弹出 jQuery 弹出窗口以插入新值。将有一个保存按钮来保存新数据。On_Save_Click 我输入新数据并关闭弹出窗口。
这是问题: 当我刷新页面时,页面再次输入值。所以,我得到重复的条目!
问题: 我怎样才能避免这个问题?我查看了 Satckoverflow 和 Google,他们都建议重定向到另一个页面。我不想将用户重定向到另一个页面。我怎样才能使用相同的表格来避免这个问题?请帮忙。
您可以使用 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;
}
}
}
最简单的方法是使用post/redirect/get 模式。
基本上,使用 post 构建页面的刷新操作需要重新发布数据。使用此模式,您将重新加载整个页面。
使用 ASP.Net,您有一个简单的替代方案,使用UpdatePanel
. 这将使用 AJAX 仅刷新页面的一部分。由于页面本身仍然是 GET 请求的结果,因此您可以刷新页面。当您使用 ASP.Net 时,它很容易集成。
最后,您可以使用自制的 AJAX 刷新。jQuery、KnockOut 和 rest 服务的组合(例如)可以帮助您避免刷新整个页面,从而受益于 ajax 调用。
这样做非常简单有效
不要在页面load()中给出IsPostBack,请在按钮内提供点击(发送或插入数据)
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) { }
}
刷新页面后您将看不到任何服务器消息..
有一些经验:
...我希望有用...