일부 임시 목록 데이터를 저장하려고하므로 사용자가 데이터베이스에 저장하기 전에 편집 할 수 있도록합니다.List 개체를 뷰 상태에 저장할 수 없습니다.
public List<ScheduleEntry> NewScheduleEntry
{
get
{
String PersistentName = "List_ScheduleEntry";
if (ViewState[PersistentName] == null || !(ViewState[PersistentName] is List<ScheduleEntry>))
{
ViewState[PersistentName] = new List<ScheduleEntry>();
}
return ViewState[PersistentName] as List<ScheduleEntry>;
}
}
public List<ScheduleEntry> ListView_CourseScheduleEntry_GetData()
{
return NewScheduleEntry;
}
이 기술을 처음 사용하는 것은 아니지만 작동하지 않습니다. 예외는 없으며 return 문까지 ListView_CourseScheduleEntry_GetData가 실행 된 것을 볼 수 있습니다.
그러나 ViewState를 세션 (다른 변경 없음)으로 변경하면 정상적으로 작동합니다. 불행히도 페이지 트랜잭션이므로 여기서는 세션을 사용하지 말아야합니다.
viewstate의 Base64 인코딩 문자열이 목록 데이터에 의해 손상되었을 가능성이 있습니까?
'ScheduleEntry' 클래스가'Serializable'으로 표시되어 있습니까? 목록에 일부 항목을 추가합니까? – Markus
@ Markus 당신 말이 맞아요. 사실 ScheduleEntry는 EF에서 왔고 모든 관련 클래스에 대해 [Serializable]을 표시해야합니다 ..... – Yiping