使用会话将值从一个页面发送到另一个页面

时间:2013-10-29 08:12:36

标签: asp.net

我正在使用会话从发送页面发送值到接收页面,它工作正常但问题是我记得 URL 而我直接运行接收页面它显示以前的信息,但它是无效的。 ...?

如果最终用户直接访问接收页面,我需要限制或给出类似的消息

我如何克服这个问题..............

这是我的代码

send.aspx.cs

protected void gv_rowcommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
        GridViewRow grow = (GridViewRow)(((LinkButton)e.CommandSource)).NamingContainer;

        Session["c"] = grow.Cells[0].Text;
        Session["s"] = grow.Cells[1].Text;
        Session["e"] = grow.Cells[2].Text;
        Session["t"] = grow.Cells[3].Text;
        Session["a"] = grow.Cells[4].Text;
        Response.Redirect("confirmation.aspx");

    }   
}

confirmation.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    lblgetcourse.Text = Convert.ToString(Session["c"]);
    lblgetstartdate.Text = Convert.ToString(Session["s"]);
    lblgetenddate.Text = Convert.ToString(Session["e"]);
    lblgettimings.Text = Convert.ToString(Session["t"]);
    lblgetamount.Text = Convert.ToString(Session["a"]);
}

4 个答案:

答案 0 :(得分:2)

在确认页面上显示值后,您可以从会话中删除它们。

Session.Remove("c");
...

这将确保确认页面始终显示来自send.aspx页面的新鲜值。您还可以在显示之前检查会话中是否存在这些值。

答案 1 :(得分:1)

在确认页面上,从会话变量中获取值并显示它们,然后清除会话变量,如:Session.Clear();

答案 2 :(得分:0)

您可以查看引荐来源标头:

Request.UrlReferrer

并查看请求的来源。

所以你的page_load看起来像:

protected void Page_Load(object sender, EventArgs e)
{
  if (!Request.UrlReferrer=='...') Response.Redirect("~/login.aspx");
...

答案 3 :(得分:0)

protected void Page_Load(object sender, EventArgs e)
{
    if(Request.UrlReferrer.AbsolutePath == "~/send.aspx")
    {
        lblgetcourse.Text = Convert.ToString(Session["c"]);
        lblgetstartdate.Text = Convert.ToString(Session["s"]);
        lblgetenddate.Text = Convert.ToString(Session["e"]);
        lblgettimings.Text = Convert.ToString(Session["t"]);
        lblgetamount.Text = Convert.ToString(Session["a"]);
    }
    else
    {
        //do something
    }

}