我正在动态创建文本框。我想获取这些文本框值并将它们存储在会话中,以便我可以将它们存储在数据库中。我怎么能这样做?
因此,我存储DYNAMICALLY创建的文本框值的方式是这样的。
List<Control> _controlsList;
controlsList = new List<Control>(); // object holds the controls
现在,在我的功能中,我会以这种方式添加它们。请记住,我有3个以上的文本框
if (i < _applicant.Fields.Count)
_applicant.AddAnswer((_controlsList[i] as TextBox).Text);
else
_application.AddAnswer((_controlsList[i] as TextBox).Text);
_sessions.ApplicationSession = ((_controlsList[i] as TextBox).Text);
// Session["TextboxValue"] = ((_controlsList[i] as TextBox).Text);
我有一个会话类
public class JobApplicantSession
{
// public JobApplication ApplicationSession
public string ApplicationSession
{
get {if (HttpContext.Current.Session["Application"] != null)
// return (JobApplication)HttpContext.Current.Session["Application"];
return (string)HttpContext.Current.Session["Application"];
return null; }
set{ HttpContext.Current.Session["Application"] = value; }
}
}
我可以添加然后当我从另一个类中检索它们时,我只获得最后添加的文本框。我需要能够循环,所以我可以将这些文本框值添加到数据库但我无法循环通过对象
var value = HttpContext.Current.Session["Application"]; //will get last textbox value
答案 0 :(得分:0)
您需要在Session
存储桶中存储可以添加和删除的复杂对象。在您的情况下,理论上您可以将List<Control>
存储在会话中,然后在要添加/删除时将其转换回List。
但是,我会指出,做一些你似乎想做的事情可能有更好的方法。会话跨整个应用程序的页面进行;这似乎是一个更加本地化的数据持久性问题,这意味着您应该使用数据库来跟踪临时状态,或者您应该使用ViewState。
答案 1 :(得分:0)
您需要以某种列表结构将它们存储在会话中。
var values = new List<string>();
// add each text box value to the list.
HttpContext.Current.Session["Application"] = values;
//To get them back
var retrieved = HttpContext.Current.Session["Application"] as List<string>;
您可能必须使用稍微使用的数据类型,有些不能很好地序列化。
答案 2 :(得分:0)
更改您的会话类,如
public class JobApplicantSession
{
// public JobApplication ApplicationSession
public string ApplicationSession
{
get { if (HttpContext.Current.Session["Application"] == null)
HttpContext.Current.Session["Application"] = new List<string>();
return (List<string>)HttpContext.Current.Session["Application"];
}
}
}
并将答案添加到列表
_sessions.ApplicationSession.Add((_controlsList[i] as TextBox).Text);
你现在可以循环..
foreach(string answer in _sessions.ApplicationSession )
{
...
}