2014-09-01 183 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與原生應用程序不同!