繁体   English   中英

ASP.NET 我无法将数据传输到另一个页面

[英]ASP.NET I can't Transfer Data to Another Page

按钮点击

2.页面加载

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

第二个代码:空白页

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

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

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

我相信这个关于 SO 的答案最合适。

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

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

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

if(PreviousPage != null)
{
 

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

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

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

我使用了 Listview/Formview 并且它有效。

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

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 label 的文本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM