将 Class 个对象存储到 Session 中并显示在另一个 asp.net Webform 上

Storing Class objects into Session and displaying on another asp.net Webform

使用 asp.net,我正在尝试检索文本框输入,将此数据封装在 C# class 中,将 class 对象存储在会话中并在另一个 Web 上显示此数据形式。我的想法是,我需要在 C# class Customer 中设置属性,然后将整个 class 对象存储到 Session 中,但也许我做错了。

这是我的 asp.net 代码的一部分,其中包含文本框:

  <asp:Label ID="lblName" runat="server" Text="Name: "></asp:Label>
                <br />
                <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
                <br /><br />
                <asp:Label ID="lblAddress" runat="server" Text="Address: "></asp:Label>
                <br />
                <asp:TextBox ID="txtAddress" runat="server"></asp:TextBox>
                <br /><br />
                <asp:Label ID="lblPhoneNumber" runat="server" Text="Phone Number: "></asp:Label>
                <br />
                <asp:TextBox ID="txtPhoneNumber" runat="server"></asp:TextBox>

下面是我的代码:

protected void btnSubmitPersonalInfo_Click(object sender, EventArgs e)
        {
            Customer customer = new Customer();
            customer.Name = txtName.Text;
            customer.Address = txtAddress.Text; 
            customer.PhoneNumber = txtPhoneNumber.Text;
            customer.City = txtCity.Text;
            customer.State = txtState.Text; 
            customer.Zip = txtZip.Text;

            Session["Customer"] = customer;
            Response.Redirect("CreditCardInfo.aspx");
        }

这是我的 C# class:

public class Customer
    {
        public string Name { get; set; }
        public string Address { get; set; }
        public string PhoneNumber { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
        public string CardNumber { get; set; }
        public string ExpirationDate { get; set; }
        public string SecurityCode { get; set; }
        public Customer() { }

    }    

这是我要显示数据的网络表单:

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

        txtDisplayData.Text = Session["Customer"].ToString();

    }
}

目前,txtDisplayData 正在显示命名空间,仅此而已。 有人能给我指出正确的方向吗,因为我觉得我想太多了。谢谢。

您可以在会话中存储任何内容。要取回它们的属性,请将会话转换为原始 class。它应该有效。

在你的例子中,你直接提供了你的会话,你需要将它转换回 Class 然后提供它:

Customer customer = new Customer();
// Assign object into session
Session["Customer"] = customer ;

您可以获得这样的详细信息:

// get session value into object
Customer customer =  (Customer)Session["Customer"];

您可以将 Session["Customer"] 类型转换为 Customer 对象,例如

var obj=(客户)会话["Customer"];

txtDisplayData.Text = obj.Name;