我正在使用会话从发送页面发送值到接收页面,它工作正常但问题是我记得 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"]);
}
答案 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
}
}