【问题标题】:Response.Redirect, Access source page data from target pageResponse.Redirect,从目标页面访问源页面数据
【发布时间】:2011-07-31 17:01:25
【问题描述】:

我有两个 ASP.NET 网页(Page1.aspx 和 Page2.aspx),Page1.aspx 包含几个 TextBox 控件和一个 Button 控件。

在按钮控件的单击事件中,我使用 Response.Redirect 方法将用户重定向到 Page2.aspx。

如何从目标页面 (Page2.aspx) 访问源页面数据(Page1.aspx 中的 TextBox 值)。

我不想使用 Cross-Page Postback 或 Server.Transfer 方法

谢谢。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您需要将这些数据保存在某个地方。 Response.Redirect 的工作方式是告诉客户端(Web 浏览器)对指定资源发出新请求。这实质上意味着旧资源被废弃。将客户端发出的每个请求视为唯一且独立的。

    保存这些值的一种简单方法是在调用Response.Redirect 之前将它们存储在Page1 上的Session state 中。然后,在Page2 中,您可以从会话状态中检索这些值。

    类似:

    第1页

    //...
    Session["SomeValue"] = TextBox1.Text;
    Session["SomeOtherValue"] = DropDownList1.SelectedIndex;
    //...
    Response.Redirect("Page2.aspx");
    

    第2页

    //...
    // Note: The following can have some additional type checking and input/value checking added
    var someValue = Session["SomeValue"];
    var someOtherValue = Session["SomeOtherValue"];
    //...
    

    【讨论】:

    • 感谢David的回复,也就是说如果我们使用response.redirect,session对象是唯一的方法,没有别的方法吗?
    • @Faizal Balsania:嗯,从技术上讲,你可以将它保存在很多地方...查询重定向中的字符串值、会话状态、应用程序状态、本地数据库、数据库服务器、文件等。会话状态是一个非常常见的持久化它的地方。哪个地方最好是你的设计问题,真的。查询字符串变量将非常 RESTful 和干净,但会使 URL 又长又丑,并且可能向用户显示比您想要的更多。
    【解决方案2】:

    尝试使用会话变量

    在第 1 页

    Session["field1"] = textbox1.Text;
    

    在第 2 页

    string page1text = Session["field1"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2014-10-28
      • 1970-01-01
      • 2013-06-17
      相关资源
      最近更新 更多