使用会话将动态值从一个 ASP 页传递到另一个 ASP 页

本文关键字:ASP 一个 另一个 会话 动态 | 更新日期: 2023-09-27 17:55:12

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

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

现在的问题是,当我使用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 不是最佳选择。

使用会话将动态值从一个 ASP 页传递到另一个 ASP 页

尝试这个按钮点击事件以存储在 cookie 中

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

您可以使用以下代码获取值:

试试这个:-----

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

对不起,我忘了.请求后的值.cookies["viewID"]

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