ここで参照されている優れた投稿を使用しています: ASP.NET の任意のクラスからセッション変数にアクセスする方法?
ただし、カスタム オブジェクト タイプをセッションに格納したいのですが、オブジェクト セッション クラスの構築に問題があります。セッションでは、SchoolID と Grade のペアのリストを保存したいと考えています。SchoolID-Grade オブジェクトは次のようになります。
[Serializable]
public class SchoolGrade
{
public string SchoolID { get; set; }
public string Grade { get; set; }
public SchoolGrade(string SchoolID, string Grade)
{
this.SchoolID = SchoolID;
this.Grade = Grade;
}
}
セッション ラッパーが続きます。コンストラクターで「Null Reference」エラーが発生します。
public class EventSchoolsAndGradesSession
{
#region " Properties "
public List<SchoolGrade> schoolgrade { get; set; }
#endregion
#region " Constructors "
private EventSchoolsAndGradesSession()
{
schoolgrade.Add(new SchoolGrade("0", "0"));
}
#endregion
#region " Methods "
public static EventSchoolsAndGradesSession Current
{
get
{
EventSchoolsAndGradesSession session = (EventSchoolsAndGradesSession)HttpContext.Current.Session["_EventStudentSchoolAndGrade_"];
if (session == null)
{
session = new EventSchoolsAndGradesSession();
HttpContext.Current.Session["_EventStudentSchoolAndGrade_"] = session;
}
return session;
}
}
#endregion
}
私の目標は、特定の SchoolID と Grade のペアをセッションに追加および削除できるようにすることです。たとえば、これはセッションに存在するペアを取得し、それらを一時リストに追加し、新しいペアを一時リストに追加してから、すべてをセッションに保存します。
protected void AddAllButton_Click(object sender, EventArgs e)
{
List<SchoolGrade> selected = new List<SchoolGrade>();
var current = EventSchoolsAndGradesSession.Current.schoolgrade.ToList();
if (current != null)
{
foreach (SchoolGrade s in current)
{
selected.Add(new SchoolGrade(s.SchoolID,
s.Grade));
}
}
selected.Add(new SchoolGrade(SchoolsDropDownList.SelectedValue,
GradeDropDownList.SelectedValue));
EventSchoolsAndGradesSession.Current.schoolgrade = selected.ToList();
}
誰かが私が間違ったことを指摘できますか?