[英]ASP.NET I can't Transfer Data to Another Page
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.