我制作了一个将数据插入数据库的webform。单击插入按钮时,将触发插入数据的代码,并在成功插入数据后,重定向到其他显示“数据已成功插入”的页面。 就像这样......
INSERT PAGE .....
if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true)
{
String A = "InsertSuccess";
Response.Redirect("OtherPage.aspx?&lnk=" + A);
}
其他页面....
String link = null;
link = Request.QueryString["lnk"];
if (link == "InsertSuccess")
{
txtLabel.Text = "Record inserted succesfully!";
}
我的问题是当我访问OTHER PAGE时,即使我没有使用插入页面..我得到相同的结果。可以说我在地址栏中输入了..http:// localhost:8672 / OtherPage.aspx?& lnk = InsertSuccess ..我正在“成功插入记录!”标签。我希望OTHER PAGE永远不会显示“记录插入成功!”消息,当我实际上没有插入一些东西,而只是通过浏览器的地址栏访问它。
答案 0 :(得分:2)
您可以使用Session变量存储更新后的状态,然后检查它是否在otherpage.aspx中可用,更新文本框并重置它。
插入页面
if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true)
{
Session["status"]="InsertSuccess";
Response.Redirect("OtherPage.aspx");
}
}
其他页面
if (Session["status"]!=null)
{
txtLabel.Text = "Record inserted succesfully!";
Session["status"]=null;
}
答案 1 :(得分:1)
好吧,我看到你不想通过在地址栏中键入“http:// localhost:8672 / OtherPage.aspx& lnk = InsertSuccess”来获取消息,那么我建议你不要传递一个带有标志的字符串,您应该传递记录ID,然后在另一页上,您应该检查您的记录ID是否真的存在于您的桌面上。
为此,我希望您使用ID作为GUID类型。
你会有这样的事情:
“HTTP://本地主机:8672 / OtherPage.aspx&安培; LNK = BBB5259E-F5A3-4271-ABC8-D95A00BE9770”
否则记住一个int ID会很容易。
答案 2 :(得分:0)
你应该改变你的查询字符串。
Response.Redirect("OtherPage.aspx?&lnk=" + A);
应该是:
Response.Redirect("OtherPage.aspx?lnk=" + A);
'&'未编码时的符号被视为参数分隔符。
Response.Redirect("OtherPage.aspx?lnk=" + A + "&secondParam=someValue");
根据评论的要求:
见这SO post
MSDN HttpServerUtility.UrlEncode
.NET Slave - Working with query strings
并且String.IsNullOrWhiteSpace()有时可能会很方便。
答案 3 :(得分:0)
if (CodeClass.InsertData(txtFirstName.Text, txtLastName.Text, Gender) == true)
{
HttpContext.Current.Items["A"]= "Inserted Successfully";
Server.Transfer("OtherPage.aspx);
}
string ContextData =(string) HttpContext.Current.Items["A"];
if(!string.Empty(ContextData))
{
Label1.Text = ContextData;
}
答案 4 :(得分:0)
假设您修复了网址并删除了“&”之后 ”?” ..你必须删除“&”
您是否考虑过浏览器缓存?有时缓存可以做到这一点,因为缓存设置,我一直在努力解决类似于你的问题。
答案 5 :(得分:0)
插入代码成功后添加此脚本:
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Success", "setInterval(function(){location.href='Default.aspx';},3000);", true);