我正在使用C#.Net开发一个Web应用程序,我需要将变量从表单传递到另一个表单。例如,在第一种形式中,我有人类如下;
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);
}
那么,我如何将这些值用于另一种形式呢?
答案 0 :(得分:2)
考虑Another_form是一个新表单的类,其中包含一个方法应该接受一个对象(person class)...例如
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)
}
答案 1 :(得分:1)
您可以让表单生成Person
实例:
// 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;
}
然后,从代码中的任何位置调用表单实例的CreatePerson
方法:
var personFromUI = yourFormInstance.CreatePerson();
这是一种方式。
您还可以将此人公开为您表单的属性,或者在您的应用程序对象中传递Person
实例,无论是表单,控件,控制器等等......这超出了您的范围问题,这将是首选方式,因为保持您的UI代码和业务代码分离。
我建议您查看 separation of concerns 。你可以在那里学习一两个关于正确应用程序设计的技巧。
答案 2 :(得分: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 Server,Redis)。