gpt4 book ai didi

ASP.NET 在重定向和回发之间传递值

转载 作者:行者123 更新时间:2023-12-04 07:05:09 29 4
gpt4 key购买 nike

首先,感谢您的阅读。

我会尽可能明确地描述我的情况。

我有一个页面,用户可以在其中发表评论。
这是评论流程

  • A-1。点击“评论”按钮
  • A2。使用 ajaxtoolkit 中的 ModalPopupExtender 显示带有文本框的模式弹出窗口。
  • A-3。用户在文本框中键入评论,然后单击“确定”。

  • 但是,当用户未登录时,预期行为会发生变化。
  • B-1。点击“评论”按钮
  • B-2。显示带有 id & pwd 文本框的登录模式弹出窗口。
  • B-3。用户输入 ID 和密码,然后单击确定。
  • B-4。显示评论模式弹出窗口
  • B-5。用户输入评论并单击确定。

  • 我在处理这个案子时遇到了问题。

    当 B-3 发生时,页面被回发,我登录用户,更新 session 对象,然后我 Response.Rediect() 页面自身显示正确的登录状态(我必须......)。
    重定向后,在 Page_Load() 中,我需要检查一些值以显示 Comment-Modal-Popup。
    但我不确定如何..

    这是我考虑的
  • View 状态
  • 我只是不能使用它,因为页面被重定向而不是回传。
  • 请求参数
  • 我可以在重定向时在 URL 上添加“showCommentPopup=1”,但这会在 URL 中留下不需要的 QueryString。我不希望用户滥用它。
  • session
  • 我实际上使用了 Session 对象。在重定向之前,我将 Session["ShowCommentPopup"] 设置为 true。在 Page_Load() 中,如果已设置,我将其删除并显示弹出窗口。

  • 当用户在多个选项卡中打开同一页面时,像我一样使用 Session 无法正常工作。
  • 用户打开两个具有相同 URL 的标签页(在 Firefox 中)
  • 用户在第一个选项卡中遵循从 B-1 到 B-3 的步骤。
  • 在页面在 B-3 和 B-4 之间重定向之前,用户刷新第二个选项卡。
  • 如果时机合适,评论弹出窗口将显示在第二个选项卡中。

  • 我希望听到来自 stackoverflow 的深刻见解。

    最佳答案

    我没有试过这个,但我想如果你存储你的 ShowCommentPopup标志在 HttpContext.Items集合而不是 session ,然后使用 Server.Transfer而不是 Response.Redirect你应该能够达到预期的结果。

    HttpContext.Items 是一个字典,可用于存储生命周期为请求生命周期的数据。这意味着来自不同选项卡或窗口的第二个请求将具有不同的 HttpContext.Items字典。

    Server.Transfer 有点像 Response.Redirect因为它允许您加载“不同”的 URL 而不是原始 URL。然而,虽然Reponse.Redirect发起新请求,Server.Transfer将现有请求传输到服务器上的新页面。

    更好地解释 Response.Redirect 之间的差异和 Server.Transfer可以找到 here .

    示例

    bool showCommentPopup = false;
    if (HttpContext.Current.Items["ShowCommentPopup"] != null)
    {
    showCommentPopup = (bool)HttpContext.Current.Items["ShowCommentPopup"];
    }

    //...

    HttpContext.Current.Items["ShowCommentPopup"] = true;

    关于ASP.NET 在重定向和回发之间传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1219109/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com