使用会话将动态值从一个 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 不是最佳选择。
尝试这个按钮点击事件以存储在 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应用程序中的缓存设置。问题解决了。