如何在回发ASP.NET之间保留列表框中的值

时间:2014-04-29 15:45:33

标签: c# asp.net

我对asp.net相当新,任何帮助都将不胜感激。该程序非常简单,我有两个网页,一个包含一个列表框,另一个包含一个文本框。该程序只是为了从另一个页面添加项目到列表框。我在WebForm1上的代码,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TestAppState
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)    
            {
                string field1 = (string)(Session["id"]);
                ListBox1.Items.Add(field1);        
            }
            else
            {
            }
        }

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

WebForm2上的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Caching;

namespace TestAppState
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            Application["id"] = txtID.Text;
            Response.Redirect("WebForm1.aspx");
        }
    }
}

3 个答案:

答案 0 :(得分:0)

你快到了。在btn_AddClick事件中,您需要找到已选择的所有ListBox项并将其值保存到会话中。您可以使用任意数量的格式执行此操作,但可能只需要一个简单的逗号分隔列表即可。

在WebForm2上的Page_Load事件中,您可以读取该会话值,并直接将文本框与会话值绑定在一起,或者做任何事先需要做的操作来处理数据。

答案 1 :(得分:0)

在第二个表单的代码隐藏中,您还可以使用Control.FindControl方法直接从第一个表单中获取值。查询字符串可能是另一种选择。不要敲其他答案,但会议有时会很棘手。虽然它们是一个简单的解决方案,但它们可能会丢失,具体取决于您的应用程序,在某些情况下,取决于浏览器的安这主要是使用HTTPS的问题。另一个参考可能是Cross-Page Posting in ASP.NET Web Pages

答案 2 :(得分:0)

有许多不同的方法可以实现您的需要。我的方法是将两个页面嵌入到一个表单中,并使用JavaScript或jQuery操作数据,并使用WebMethods来防止使用回发。这对用户来说也会更加顺畅。