1

我制作了一个将数据插入数据库的网络表单。单击插入按钮时,会触发插入数据的代码,插入数据成功后,会重定向到显示“数据插入成功”的其他页面。就像这样...

插入页面.....

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!";

            }

我的问题是当我访问其他页面时,即使我没有使用插入页面..我得到相同的结果。假设我在地址栏中输入了 ..http://localhost:8672/OtherPage.aspx?&lnk=InsertSuccess ..我得到“成功插入记录!” 标签。我希望其他页面永远不会显示“成功插入记录!” 当我实际上没有插入某些东西而只是通过浏览器的地址栏访问它时的消息。

4

6 回答 6

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; 

        }
于 2012-10-24T07:25:26.910 回答
1

好吧,对于我所看到的,您不想仅通过在地址栏中键入“http://localhost:8672/OtherPage.aspx&lnk=InsertSuccess”来获取消息,那么我建议您不要传递带有标志的字符串应该传递记录 ID,然后在您的其他页面上,您应该检查您的记录 ID 是否确实存在于您的表中。

为此,我希望您使用 ID 作为 GUID 类型。

你会有这样的东西:

“http://localhost:8672/OtherPage.aspx&lnk=BBB5259E-F5A3-4271-ABC8-D95A00BE9770”

否则太容易记住一个 int ID。

于 2012-10-24T07:32:12.457 回答
0

你应该改变你的查询字符串。

    Response.Redirect("OtherPage.aspx?&lnk=" + A);

应该:

    Response.Redirect("OtherPage.aspx?lnk=" + A);

未编码时的“&”符号被视为参数分隔符。

    Response.Redirect("OtherPage.aspx?lnk=" + A + "&secondParam=someValue");

根据评论的要求:
请参阅此SO 帖子
MSDN HttpServerUtility.UrlEncode
.NET Slave - Working with query strings

并且String.IsNullOrWhiteSpace()有时可能很方便。

于 2012-10-24T07:32:42.003 回答
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;
}
于 2012-10-24T08:07:11.817 回答
0

假设您修复了您的 URL 并删除了“?”之后的“&”。..您必须删除“&”

您是否考虑过浏览器缓存?有时缓存可以做到这一点,由于缓存设置,我一直在努力解决与您类似的问题。

于 2012-10-24T08:13:24.573 回答
0

成功插入代码后只需添加此脚本:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Success", "setInterval(function(){location.href='Default.aspx';},3000);", true);
于 2021-02-08T09:12:24.500 回答