대규모의 다중 영역 MVC 프로젝트를 구축 중입니다. (MVC 2 베타).IList의 로컬 복사본이 변경되면 Session에 저장된 IList가 업데이트됩니다.
나는 다음과 같다 즉, 자신의 프로젝트 MySession에서, 세션 래퍼 클래스를 가지고 : 아이 영역의 프로젝트에서
Public Class MySession
Private Shared _userlist As String = "UserList"
Public Shared Property UserList() As IList
Get
If HttpContext.Current.Session(_userlist) Is Nothing Then
Return Nothing
Else
Return CType(HttpContext.Current.Session(_userlist), IList)
End If
End Get
Set(ByVal value As IList)
HttpContext.Current.Session(_userlist) = value
End Set
End Property
End Class
, 나는 구축하고 내 래퍼를 통해 세션에 대한 목록을 저장
Dim favoritesList = (From m In db.getFavorites(UserId) Select m).ToList
MySession.UserList = favoritesList
잘 작동합니다. 나중에 로컬 변수에 세션의 목록을 검색, userList 여기서 :
Dim userList As IList(Of getFavoritesResult)
userList = MySession.UserList
내가 다음 LOCAL 여기서 userList에 새 항목을 추가 (그리고 그들은 그것을 저장하려면 사용자에게 묻습니다) :
userList.Add(New getFavoritesResult With {.Id = addApp.AppId, .DisplayText = addApp.DisplayText, ...})
여기에 문제가 발생합니다. 위의 .Add 메서드 바로 다음에 로컬 userList에 새 항목이 추가되었습니다. 하지만 Session에 저장된 userList에는 로컬 목록에 추가 된 새 항목이 포함됩니다.
사용자가 새 목록을 저장하고 명시 적으로 저장하지 않는 한 목록에서 세션을 업데이트하지 않으려합니다.
왜 이런 일이 발생합니까? 현재 세션에있는 항목이 아닌 로컬 목록에만 항목을 추가하려면 어떻게해야합니까?
고마워요.
는 물리적으로 새로운 목록에 세션 목록에서 목록 항목을 복사 할 필요까지 상처. 모든 작품은 이제 괜찮아. 제임스에 대한 답을 얻은 이유는 그가 처음으로 내가 가진 기본적인 문제를 지적했기 때문입니다. 감사합니다 제임스와 Oded! –