ASP.NET 我无法将数据传输到其他页面



按钮点击

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.HttpSessionStatethis[string].get,null

第二个代码:空白页

第三代码:";否";(由于其他条件(。若我删除else条件,我会得到和第一个代码相同的错误消息。

我几天来一直在努力解决这个问题。我找不到任何瑕疵。我非常感谢现在的任何帮助。

edit:我可以将数据从.master页面传输到任何.aspx页面,没有任何问题。但从.aspx页面到艰难的.aspx页面,这是不可能的。没有办法。

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

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

<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,它成功了。

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

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";
}

无论您在第一页中为会话["xd"]分配什么,都将分配给第二页中lblotelid标签的文本。

最新更新