2014-04-01 2 views
-1

C# .Net에서 웹 응용 프로그램을 개발 중이며 양식에서 다른 양식으로 변수를 전달해야합니다. 예를 들어, 첫 번째 형태에서는 다음과 같은 사람 클래스가 있습니다.웹 양식간에 변수를 공유하려면 어떻게해야합니까?

public class Person 
{ 
    private string _Name; 
    private string _Surname; 
    private string _DateOfBirth; 
    private string _Gender; 
    private string _Symptoms; 

    public Person() 
    { 
     Name = "Not available"; 
     Surname = "Not available"; 
     DateOfBirth = "Not available"; 
     Gender = "Not available"; 
     Symptoms = "Not available"; 
    } 

    public string Name 
    { 
     get { return _Name; } 
     set { _Name = value; } 
    } 
    public string Surname 
    { 
     get { return _Surname; } 
     set { _Surname = value; } 
    } 
    public string DateOfBirth 
    { 
     get { return _DateOfBirth; } 
     set { _DateOfBirth = value; } 
    } 
    public string Gender 
    { 
     get { return _Gender; } 
     set { _Gender = value; } 
    } 
    public string Symptoms 
    { 
     get { return _Symptoms; } 
     set { _Symptoms = value; } 
    } 
} 

그런 다음 값을 할당합니다.

protected void Page_Load(object sender, EventArgs e) 
    { 
     Person MyPerson = new Person(); 
     MyPerson.Name = txtName.Text; 
     MyPerson.Surname = txtSurname.Text; 
     MyPerson.DateOfBirth = txtBirth.Text; 
     MyPerson.Gender = listGender.Text; 
     MyPerson.Symptoms = checked(listSymptoms.Text); 
    } 

그래서이 값들을 다른 형식으로 어떻게 사용할 수 있습니까? 양식 인스턴스의 CreatePerson 방법, 코드에서 어디에서, 그리고

// within your form class, whatever it is 
public Person CreatePerson() 
{ 
    Person MyPerson = new Person(); 
    MyPerson.Name = txtName.Text; 
    MyPerson.Surname = txtSurname.Text; 
    MyPerson.DateOfBirth = txtBirth.Text; 
    MyPerson.Gender = listGender.Text; 
    MyPerson.Symptoms = checked(listSymptoms.Text); 
    return MyPerson; 
} 

전화 : 방법입니다

var personFromUI = yourFormInstance.CreatePerson(); 

+4

여기에 질문을 게시하기 전에 조금 검색하는 것이 좋습니다. 나는 당신이 이것을 어떻게 관리 할 수 ​​있는지를 설명하는 인터넷상의 여러 페이지들이 있다는 사실을 안다. –

+0

다른 폼은 객체 (person 클래스)를 받아들이는 메소드를 포함해야합니다 ... 예를 들어 다른 폼은 public void foo (Person obj) {/// your code}를 포함합니다 ... 그렇다면 다른 것에서 변수를 전달해야합니다 폼처럼 보호 된 무효 Page_Load (개체 보낸 사람, EventArgs 전자) { 사람 MyPerson = 새로운 사람(); MyPerson.Name = txtName.Text; MyPerson.Surname = txtSurname.Text; MyPerson.DateOfBirth = txtBirth.Text; MyPerson.Gender = listGender.Text; MyPerson.Symptoms = checked (listSymptoms.Text); foo (MyPersion) } – vino20

답변

1

당신은 양식 대신 Person 인스턴스를 생성 할 수있다 그것을하기 위해.

양식의 속성으로 사람을 노출하거나 응용 프로그램 개체 (양식, 컨트롤, 컨트롤러 등) 전체에 Person 인스턴스를 전달할 수 있습니다. 이는 질문의 범위를 벗어나지 만 귀하의 UI 코드와 귀하의 사업장 코드가으로 분리되어 있기 때문에 선호하는 방법이 될 것입니다.

separation of concerns으로 살펴 보시기 바랍니다. 적절한 애플리케이션 설계에 대한 트릭이나 두 가지를 배울 수 있습니다.

2

이 Another_form 예 다야

public void foo(Person obj) 
{ ///your code } 

하는 방법은 객체 (사람 클래스)를 받아 들여야 포함하는 새로운 형태의 클래스입니다 ... 생각 ... 당신은 같은 다른 폼에서 변수를 전달해야

protected void Page_Load(object sender, EventArgs e) 
{ 
Person MyPerson = new Person(); 
MyPerson.Name = txtName.Text; 
MyPerson.Surname = txtSurname.Text; 
MyPerson.DateOfBirth = txtBirth.Text; 
MyPerson.Gender = listGender.Text; 
MyPerson.Symptoms = checked(listSymptoms.Text); 
another_form f=new another_form(); 
f.foo(MyPersion) 
} 
+0

이 코드는 모범 사례가 아닙니다 ... 귀하가 묻는 것에 대한 답변 중 하나입니다 ...국가 관리 개념을 사용하려고 노력하십시오 ... – vino20

1

사람 개체를 채운 다음 다른 개체를 동일한 개체 개체로 참조하고 싶습니까? 아마도 가장 간단한 방법은 Session에 객체를 저장 한 다음 두 번째 형식에서 객체를 검색하는 것입니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    Person MyPerson = new Person(); 
    MyPerson.Name = txtName.Text; 
    MyPerson.Surname = txtSurname.Text; 
    MyPerson.DateOfBirth = txtBirth.Text; 
    MyPerson.Gender = listGender.Text; 
    MyPerson.Symptoms = checked(listSymptoms.Text); 
    Session["CurrentPerson"] = MyPerson; 

} 

개인적으로, 나는 일반적으로 세션이 방법을 사용하지 않는 대신 내 응용 프로그램으로 작업 흐름의 유형을 구축하는 것은 (예를 들어, SQL 서버, 레디 스) 층의 지속성.

관련 문제