2014-09-01 184 views
0

我遇到了一个小问题,需要一些帮助在页面之间传递对象

我想做的是从一个页面传递一个对象,并将它传递给另一个页面。

这对C#来说没问题,因为代码看起来像。

namespace WindowsFormsApplication1 
{ 
public class Class1 
{ 
    private String firstName; 
    private String surName; 
    private int age; 

    public Class1() 
    { 

    } 

    public String FirstName 
    { 
     get { return firstName; } 
     set { firstName = value; } 
    } 

    public String SurName 
    { 
     get { return surName; } 
     set { surName = value; } 
    } 

    public int Age 
    { 
     get { return age; } 
     set { age = value; } 
    } 
} 

和形式看起来像

private void button1_Click(object sender, EventArgs e) 
    { 
     Class1 class1 = new Class1(); 
     class1.FirstName = textBoxFirstname.Text; 
     class1.SurName = textBoxSurname.Text; 
     class1.Age = int.Parse(textBoxAge.Text); 

     Form2 form2 = new Form2(class1); 
     form2.Show(); 
    } 

而且

public partial class Form2 : Form 
{ 
    private Class1 class1; 

    public Form2(Class1 class1) 
    { 
     InitializeComponent(); 
     this.class1 = class1; 

     label2.Text = (class1.FirstName + " " + class1.SurName); 
     label4.Text = Convert.ToString(class1.Age); 
    } 
} 

这就是我来了这么远

,这些都是网页

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

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Class1 class1 = new Class1(); 
     class1.FirstName = TextBoxFirstName.Text; 
     class1.SurName = TextBoxSurname.Text; 
     class1.Age = int.Parse(TextBoxAge.Text); 

     //Missing code 
    } 
    } 

这是第二个形式

<body> 
<form id="form1" runat="server"> 
<div> 

    <asp:Label ID="Label1" runat="server" Text="Details"></asp:Label><br /> 
    <asp:Label ID="Label2" runat="server" Text="Name"></asp:Label> 
    <asp:Label ID="Label3" runat="server" Text="Name"></asp:Label> 

    <br /> 

    <asp:Label ID="Label4" runat="server" Text="Name"></asp:Label> 
    <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label> 
    <br /> 

</div> 
</form> 
</body> 

这里是背部代码

public partial class WebForm2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     //missing code to display label 3 

     //Missing code to display label 5 
    } 
} 
+3

'form2.Show' in ASP.NET?使用[这些方法]之一(http://msdn.microsoft.com/en-us/library/vstudio/6c3yckfw(v = vs.100).aspx)在ASP.NET网页之间传递值。 – 2014-09-01 15:46:37

+0

您是否需要将*实际对象*传递给另一页?这听起来像是对服务器端状态的依赖,如果可能的话,你可能想避免这种依赖。你可以通过一个*标识符*的对象,并从第二页上的数据重新获取它? – David 2014-09-01 15:48:34

回答

0

使用Sessions

保存您的信息,你需要(如您的Class1的会话中的一个实例),然后重新使用在另一页:

在第1页中Button_Click

Session["YourSessionName"] = class1Instance; 

在第2页中Page_Load

if (Session["YourSessionName"] != null) //Check if session is empty 
{ 
    Class1 class1InstanceOnPage2 = (Class1)Session["YourSessionName"]; 
} 

然后你就可以重用所有你班上的东西。 这也适用于字符串等

但这只适用于ASP.NET而不适用于WinForms。

我不明白你为什么把它混在一起,这是不可能的。

0

在ASP.Net中,您不会直接将对象传递到其他页面。从某种意义上说,页面与每个页面都是断开的,但仅通过用户输入进行连接。

要传递数据而不是对象(这是正确的方式来考虑它),你可以通过querystring传递它,如果它不是私人的,并且你不担心通过Session对象被篡改,if它需要是私有的或通过数据库存储并在其他页面中检索。

Web与原生应用程序不同!