【问题标题】:ASP.NET I can't Transfer Data to Another PageASP.NET 我无法将数据传输到另一个页面
【发布时间】:2020-12-20 15:42:59
【问题描述】:

buttonclick

2.pageload

protected void lnkotel1_Click(object sender, EventArgs e)
    {
        Session["xd"] = lblotelid1.Text;



        Server.Transfer("~/otelsayfa.aspx");



        Response.Redirect("otelsayfa.aspx?id=" + lblotelid1.Text);
    }

 protected void Page_Load(object sender, EventArgs e)
    {

        lblotelid.Text = Session["xd"].ToString();




        var last = PreviousPage;
        if (last != null)
        {
            lblotelid.Text = ((TextBox)last.FindControl("TextBox1")).Text;
        }
        else
        {
            lblotelid.Text = "no";
        }




        if (Request.QueryString.Get("id") == null)
        {
            lblotelid.Text = "no";
        }
        else
        {
            lblotelid.Text = Request.QueryString["id"].ToString();
        }

我尝试了 3 种不同的变体,但都失败了。这是我一一运行此代码后的事件:

第一个代码:我收到一条错误消息:System.Web.SessionState.HttpSessionState.this[string].get, null

第二个代码:空白页

第三个代码:“否”(因为 else 条件)。如果我删除 else 条件,我会收到与第一个代码相同的错误消息。

我这几天都在尝试解决这个问题。而且我找不到任何缺陷。我现在真诚地感谢任何形式的帮助。

编辑:我可以毫无问题地将数据从 .master 页面传输到任何 .aspx 页面。但是从 .aspx 页面到不同的 .aspx 页面,这是不可能的。没办法。

【问题讨论】:

  • 欢迎来到 SO!请不要将源代码作为图像发布。包含源代码并使用“代码示例”按钮对其进行正确格式化。
  • MasterPages 包装常规页面,因此如果有意义的话,它们是同一页面生命周期的一部分。是否为站点和/或页面启用了会话状态?使用服务器传输 Response.Redirect,而不是两者都使用,因为我认为在这种情况下重定向会被忽略。
  • @Enzoaeneas 我不明白你所说的codesession state enablecode 是什么意思,但是站点中有一个登录和加入页面。他们工作得很好。此外,我不会一起使用这些代码。我只是这样写来展示它们。上面有2张图片,防止混在一起。
  • 会话状态可以选择性地为asp.net页面启用/禁用。

标签: asp.net


【解决方案1】:

我相信 SO 上的 this answer 最合适。

通过在您的按钮上设置 PostBackUrl,您当前页面中的数据将作为请求集合的一部分发送到您的下一页。

<asp:LinkButton id="lnkotel1" Text="Click Me!" runat="server" PostBackUrl="page2.aspx"/> 

为了测试跨页回发,MSDN link 给出了这个例子(我把它改成了 C#):

if(PreviousPage != null)
{
 

    if(PreviousPage.IsCrossPagePostBack == true){
         //Cross-page post
     }
     else 
     {
       //Not a cross-page post
     }
}

然后像这样访问原始文本框的值:

((TextBox)PreviousPage.FindControl("lblotelid1")).Text

【讨论】:

  • 如果我没有遗漏任何东西,这是原帖中的第二个代码。不幸的是没有工作。
【解决方案2】:

我使用了 Listview/Formview 并且效果很好。

【讨论】:

    【解决方案3】:

    要通过会话发送数据,您应该在第一页中执行以下操作:

    ASP 形式:

    <asp:Button ID="lblotelid1" runat="server" OnClick="lblotelid1_Click" Text="Yes" />
    

    代码背后:

        protected void lblotelid1_Click(object sender, EventArgs e)
        {
            Session["xd"] = lblotelid1.Text;
    
            Response.Redirect("~/otelsayfa.aspx");
        }
    

    在第二页

    ASP 形式:

    <asp:Label ID="lblotelid" runat="server"></asp:Label>
    

    代码背后:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["xd"] != null)
                lblotelid.Text = Session["xd"].ToString();
            else
                lblotelid.Text = "No";
        }
    

    无论您在第一页分配给 session["xd"] 的内容,都会分配给第二页中 lblotelid 标签的文本。

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      相关资源
      最近更新 更多