在ASP.NET / C中插入数据后重定向页面#

时间:2012-10-24 07:09:23

标签: c# asp.net redirect postback response.redirect

我制作了一个将数据插入数据库的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永远不会显示“记录插入成功!”消息,当我实际上没有插入一些东西,而只是通过浏览器的地址栏访问它。

6 个答案:

答案 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);