将值从一个webform中的文本框传递到另一个webform中的文本框

时间:2009-12-21 15:36:29

标签: asp.net webforms

我试图让用户在form1的文本框中输入一些细节,并获得针对数据库验证的条目。如果条目是正确的,form2将加载其他texbox,包括他们输入的texbox。但我不希望他们对他们输入值的文本框进行任何更改,以前他们不必重新输入值。

如何让文本框中的值从form1移动到form2?

下面的代码显示了我对两种表单所做的事情,但第二种形式dosent在表单加载时显示文本框中的项目。

第一个表格

protected void Button1_Click(object sender,EventArgs e)         {             string strConn;

        strConn = "Provider=MIcrosoft.Jet.OLEDB.4.0;data Source=" +
            Server.MapPath("App_Data/test.mdb");

        OleDbConnection mDB = new OleDbConnection(strConn);
        mDB.Open();

        prodSnStr = pSnTextBox.Text;
        purDate = Convert.ToDateTime(purDateTextBox.Text);
        string dateStr = purDateTextBox.Text;

        productClass aProduct = new productClass();

        if (aProduct.Prods(mDB, prodSnStr, purDate))
        {
            Session["ProdSn"] = pSnTextBox.Text;
            Session["PurDate"] = purDateTextBox.Text.ToString();

            Response.Redirect("Warranty.aspx");

        }
        else
        {
            //error message
        }
     }

形成两个

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Request.QueryString["ProdSn"] != "")
            {
                pSNoTextBox.Text = Request.QueryString["ProdSn"];

                if (Request.QueryString["PurDate"] != "")
                {
                    dateTextBox.Text = Request.QueryString["PurDate"];
                }
                else
                {
                    //error message to display
                }

            }
            else
            {
                //error message to display
            }
        }

eagaerly等待你的回复..谢谢..

4 个答案:

答案 0 :(得分:2)

在您的代码中,您将值放在会话中的一页:

    Session["ProdSn"] = pSnTextBox.Text;
    Session["PurDate"] = purDateTextBox.Text.ToString();

但是,您正尝试在Request集合的第2页上阅读它们:

    if (Request.QueryString["ProdSn"] != "")
    {
         pSNoTextBox.Text = Request.QueryString["ProdSn"];
    if (Request.QueryString["PurDate"] != "")
    {
         dateTextBox.Text = Request.QueryString["PurDate"];
    }

这没有任何意义。如果要使用会话,还必须从会话对象中取回值。

就个人而言,我会调查Cross Page postbacksServer.Transfer以及Page.PreviousPage。如果使用Server.Transfer。只需确保不将preserveForm参数设置为false。

答案 1 :(得分:0)

您没有将值作为查询字符串传递。如果您是Response.Redirect将如下所示:

Response.Redirect("Warranty.aspx?ProdSn=something&PurDate=something");

相反,由于您将这些值保存在Session变量中,请尝试以下方法:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (Session["ProdSn"] != "")
        {
            pSNoTextBox.Text = Session["ProdSn"];

            if (Session["PurDate"] != "")
            {
                dateTextBox.Text = Session["PurDate"];
            }
            else
            {
                //error message to display
            }

        }
        else
        {
            //error message to display
        }
    }

答案 2 :(得分:0)

在第一个表格的button_click中,我输入了此代码

Session [“ProdSn”] = pSnTextBox.Text; Session [“PurDate”] = purDateTextBox.Text.ToString();

Response.Redirect(“Warranty.aspx?ProdSn =”+ Server.UrlEncode(pSnTextBox.Text)+     “& PurDate =”+ Server.UrlEncode(purDateTextBox.Text));

然后在第二种形式的Page_load事件中我做了这个..

string value = Request [“ProdSn”];             string value1 = Request [“PurDate”];             pSnTextBox.Text = value;             purDateTextBox.Text = value1;

没有麻烦持续......轻松而完美地工作......

感谢你帮助.... 非常感激

答案 3 :(得分:-1)

您的asp.net页面必须将您的数据发布到第二页。 只需设置按钮PostBackUrl属性。

<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="target.aspx" />

当你把事情变得复杂时,我不明白。 当用户单击该按钮时,所有数据都将发送到您的目标页面。