使用Session将动态值从一个ASP页面传递到另一个ASP页面?

时间:2014-03-31 12:18:16

标签: c# asp.net session

伙计们我试图将变量从一个页面传递到另一个页面。在搜索时,我发现使用QueryString方法或Session用于传递变量。我不喜欢QueryString方法,因为它在URL中显示可以修改的数据,所以我去了会话。

现在我在asp中添加了一个DataGridView,每行都有一个按钮。单击此按钮后,将创建一个会话变量,其中包含单击按钮的行的第1列的值,然后重定向到我正在使用此会话变量的另一个页面。

现在问题是,当我使用Visual Studio调试器时,这工作正常,变量值根据按钮单击不断变化。但是,一旦我将网站上传到托管,我第一次点击DataGridView中的按钮就会创建变量,但是当我再次按下不同行中的按钮时,变量值不会改变。它保持不变,除非我在重定向页面的浏览器中按F5,然后才会更新该值。

我认为该值存储在浏览器的缓存中,并且在我强制刷新页面之前不会更改。我该怎么做才能解决这个问题?有没有其他方法来传递变量而不是上面提到的两种方法?

创建会话和重定向的代码:

GridDataItem item = (GridDataItem)e.Item;
string ticketid = item["ID"].Text;
Session["viewID"] = ticketid;
Response.Redirect("View.aspx");

检索会话的代码:

String s = Session["viewID"] as String;

我还想避免使用Cookie,许多用户在浏览器中禁用了Cookie,因此使用Cookie不会是最佳的。

2 个答案:

答案 0 :(得分:0)

尝试使用按钮点击事件存储在Cookie中

<强> Response.Cookies["viewID"].Value = Convert.ToBase64String(Encoding.UTF8.GetBytes(ticketid));

你可以使用这段代码获得价值:

试试这个:-----

<强> String s =Encoding.UTF8.GetString(Convert.FromBase64String(Request.Cookies["viewID"].Value));

抱歉,在Request.cookies [“viewID”]

之后我忘了.Value

答案 1 :(得分:0)

它只是保存缓存中的值。我必须强制关闭ASP Web应用程序中的缓存设置。问题解决了。