2014-09-01 2 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' в ASP.NET? Используйте один из [этих способов] (http://msdn.microsoft.com/en-us/library/vstudio/6c3yckfw (v = vs.100) .aspx) для передачи значений между веб-страницами ASP.NET. –

+0

Вам нужно передать * фактический объект * на другую страницу? Это звучит как зависимость от состояния сервера на стороне, которую вы, возможно, захотите избежать, если это возможно. Можете ли вы просто передать * идентификатор * для объекта и повторно извлечь его из данных на второй странице? – David

ответ

0

Использование Sessions:

Сохраните информацию вам нужно (например, экземпляр вашего Class1) в сеансе и использовать его в другой странице:

На Page1 в Button_Click:

Session["YourSessionName"] = class1Instance; 

На Page2 в Page_Load:

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

И тогда вы можете использовать все ваши вещи из класса. Это также работает со строками и т. Д.

Но это относится только к ASP.NET, а не к WinForms.

Я не понимаю, почему вы его смешиваете, это невозможно.

0

В ASP.Net вы не передаете объекты непосредственно на другие страницы. В некотором смысле, страницы отключаются от каждого, но связаны только с помощью ввода пользователем.

Чтобы передать данные, а не объекты (это правильный способ подумать об этом), вы можете передать его через запрос, если он не является приватным, и вы не беспокоитесь о подделке через объект Session, если он должен быть закрытым или через базу данных, где он хранится, а затем извлекается на другой странице.

Веб-сайт отличается от родного приложения!

Смежные вопросы