【问题标题】:Asp.net Session state Trying to keep contents of textbox when returned to pageAsp.net 会话状态返回页面时尝试保留文本框的内容
【发布时间】:2013-11-20 19:39:38
【问题描述】:

有两页,一页有一个文本框和一个按钮,另一页有一个按钮和一个标签。我想要做的是在第 1 页上显示文本框的内容,在按钮单击时第 2 页的标签中。然后当我单击按钮返回第 1 页时。阻止在第 1 页的文本框中输入的内容。抱歉,如果它令人困惑。这是我的代码

page1.aspx

 protected void Button1_Click(object sender, EventArgs e)

 {      
 Session["fstName"] = txtBox.Text;
 Response.Redirect("Page2.aspx");
  }

page2.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        string a = Session["fstName"].ToString();
        lblPage2.Text = a;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("WebForm1.aspx");
    }

【问题讨论】:

  • 从外观上看,这应该可行。你遇到了什么错误?
  • 返回page1时没有错误,只是文本框为空
  • 有没有机会在 web.config 中关闭会话状态? <sessionState mode="Off"> 或在页面上? EnableSessionState="false"

标签: c# asp.net


【解决方案1】:

返回WebForm1.aspx时文本框的值在哪里设置?它应该与Page2.aspx 上的标签非常相似。比如:

protected void Page_Load(object sender, EventArgs e)
{
    string a = Session["fstName"].ToString();
    txtBox.Text = a;
}

在最坏的情况下,您可能需要围绕它进行一些错误检查。可能是这样的:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
        if (Session["fstName"] != null)
        {
            string a = Session["fstName"].ToString();
            txtBox.Text = a;
        }
}

【讨论】:

  • 我不认为我必须在返回时设置值。我以为那是会话状态的用途?是否可以添加 put "string a = Session["fstName"].ToString(); lblPage2.Text = a; 到按钮单击第 1 页或者它是否已进入第 2 页的页面加载?对不起,如果我让你困惑
  • @FrancisGall:会话状态将值保存在有状态的服务器端上下文中,但它不会自动使用该值填充控件。在您的第二页中,您必须显式地从会话状态中获取值并将其设置为控件的文本。为什么第一页上的控件会有所不同?当页面加载时,如果会话状态中有值需要在该页面上,您需要从会话状态中获取它们并将它们放在页面上。
  • @FrancisGall:你不能在另一个页面的页面上设置控件,不。每次对页面发出请求时,该页面对象都会被创建、初始化、使用您拥有的任何代码进行处理、发送给用户,然后再销毁。当一个页面加载时,没有其他页面存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
  • 2014-01-02
相关资源
最近更新 更多