2012-04-20 5 views
1

동적으로 텍스트 상자를 만듭니다. 그 텍스트 상자 값을 가져 와서 세션에 저장하여 데이터베이스에 저장할 수 있습니다. 내가 어떻게 할 수 있니?세션에 텍스트 상자 값 추가

그래서, 동적으로 생성 된 텍스트 상자 값을 저장하는 방법은이 방법입니다.

List<Control> _controlsList; 
controlsList = new List<Control>();  // object holds the controls 

이제는 제 기능으로이 방법을 추가하고 있습니다. 명심 내가 세션 클래스를

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; } 
    } 


} 

그때 추가 할 수 있습니다하지만 난 다른 클래스에서 그들을 검색 할 때 내가 마지막에 추가 텍스트 상자를 얻을 수있는 텍스트 상자

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); 

3+ 있습니다. 난 내가 데이터베이스에 그 텍스트 상자에 값을 추가 할 수 있도록 루프를 통해 할 수 있어야하지만 난

var value = HttpContext.Current.Session["Application"]; //will get last textbox value 

답변

0
foreach(string answer in _sessions.ApplicationSession) 
{ 
... 
} 
+0

다른 클래스에서 어떻게 검색합니까? 루프를 통해 데이터베이스에 추가 할 수 있습니까? –

+0

JobApplicantSession 인스턴스를 만들고 다른 클래스에서 사용하십시오 .. – hkutluay

+0

나는 이것을 할 수있었습니다 : List result = (List ) HttpContext.Current.Session [ "Application"]; –

0

당신은 당신이 추가로 제거 할 수 Session 양동이에 복잡한 객체를 저장해야하는 객체를 통해 루프를 기울인다 . 귀하의 경우에는 이론적으로 그냥 List<Control>을 세션에 저장 한 다음 추가/제거하려는 경우 List로 다시 변환 할 수 있습니다.

그러나 내가 지적하고자하는 바는 아마도 당신이하려고하는 것처럼 행동하는 훨씬 좋은 방법 일 것입니다. 세션은 앱 전체에서 실행됩니다. 이것은 좀 더 지역화 된 데이터 지속성 문제 인 것 같습니다. 즉, 데이터베이스를 사용하여 임시 상태를 추적해야하거나 ViewState를 사용해야합니다.

+0

어떻게 내가 viewstate가 사용할 수 있습니다 .. 대답은

_sessions.ApplicationSession.Add((_controlsList[i] as TextBox).Text); 

지금 루프 할 수있는 목록에

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"]; } } } 

같은 세션 클래스를 변경하고 추가

? 그나저나 나는 세션을하는 것처럼 나에게 똑같은 문제가있어? –

+0

올바른 'ViewState'는 저장 공간이이 페이지에만 국한되어 있다는 점을 제외하고는'Session'과 유사하게 작동합니다. 마지막으로 작성된 값을 덮어 쓰지 않고 코드를 수정해야합니다. 예를 들어 오브젝트를'List <>'에 저장 한 다음 해당 오브젝트에 추가하는 방법이 있습니다. – Tejs

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>; 

사용하는 데이터 유형으로 재생해야 할 수도 있고, 일부는 잘 직렬화하지 않을 수도 있습니다.