好的,我正在将C#程序改编为asp程序,我有一个主窗体,该窗体包含一个列表框,另一个包含向列表框添加新信息的窗体。我可以填写第二个表单并保留其中的值,Application["getData"];
但是当我转到另一页时,我需要运行以下代码。
public void AddGig()
{
AddGigForm frm = new AddGigForm();
if (Application["getData"] != null)
{
Application["saveData"] = Application["getData"];
gigList.addGig(frm.GetData());
UpdateListbox();
}
gigList.addGig
回到GetData()
第二种形式的方法时,我遇到了问题。我只是不知道还有什么用。
GetData方法:
public GigOpportunity GetData()
{
Application["GetData"] = new GigOpportunity
(txtId.Text, gigDate.SelectedDate, txtVenue.Text, txtGenre.Text,
Convert.ToDouble(txtCost.Text), Convert.ToInt32(txtCapacity.Text), chkHeadliner.Checked, txtMainAct.Text, chkEngineer.Checked);
return new GigOpportunity(txtId.Text, gigDate.SelectedDate, txtVenue.Text, txtGenre.Text, Convert.ToDouble(txtCost.Text), Convert.ToInt32(txtCapacity.Text), chkHeadliner.Checked, txtMainAct.Text, chkEngineer.Checked);
}
addGig方法:
public void addGig(GigOpportunity gigOpportunity)
{
//Make sure a gig with this id does not already exist
foreach (GigOpportunity g in gigList)
{
if (g.GigId == gigOpportunity.GigId)
{
throw new DuplicateIdException();
}
}
gigList.Add(gigOpportunity);
}
我现在了解您的问题。您不会像在Windows窗体中那样思考。您以其他形式声明了这些方法。当您通过分配一个新的Form对象调用它时,您将无法获得内部的值,因为在更改页面后这些值已被丢弃。
因此,在您的情况下:
if (Application["getData"] != null)
{
Application["saveData"] = Application["getData"];
gigList.addGig((GigOpportunity)Application["getData"]);
UpdateListbox();
}
但我建议您使用Session
对象而不是Application
对象。您可以在此处了解更多信息
因此,您必须这样做:
if (Session["getData"] != null)
{
Session["saveData"] = Session["getData"];
gigList.addGig((GigOpportunity)Session["getData"]);
UpdateListbox();
}
您无需创建第二个表单对象,AddGigForm
并且必须确保GetData
在声明为分配您的Session的表单中调用您的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句