2011-12-21 53 views
1

我有一個方法來檢索會話變量,在這種情況下組織。出於某種原因,當我調用get會話方法get Organizations並將數據傳遞給SelectList方法來處理某些命名邏輯時,會話變量正在更新。我不希望更新會話值,也不瞭解發生了什麼。以下是所有的方法。我錯過了什麼?MVC 4會話變量得到更新,我不知道如何

控制器的方法:

public ActionResult Create() 
     { 
      SignUpEventFormModel model = new SignUpEventFormModel(); 

      SelectListHelpers listHelper = new SelectListHelpers(); 
      model.OrganizationList = listHelper.GetOrgSelectList(sessionRepository.GetUserSession().Organizations, null); 

      return View(model); 
     } 

得到用戶的會話方法:

public UserSession GetUserSession() 
     { 
      UserSession us = (UserSession)HttpContext.Current.Session["UserSession"]; 
      if (us == null) 
      { 
       string email = HttpContext.Current.User.Identity.Name; 
       SessionSetupRepository sessionsetupRepository = new SessionSetupRepository(new UserRepository(null, null), new SignUpRepository(), new ActivityRepository(), new OrganizationRepository()); 
       us = sessionsetupRepository.SetupUserSession(email); 
      } 

      return us; 
     } 

獲取組織選擇列表方法:

public SelectList GetOrgSelectList(IEnumerable<Organization> Orgs, int? SelectedOrgID) 
     { 
      List<Organization> OrgList = Orgs.ToList(); 

      OrgList.Where(o => !o.IsAdmin).ToList().ForEach(o => o.Name = o.Name + " (Permission Request Required)"); 

      if (SelectedOrgID.HasValue) 
       return new SelectList(OrgList, "OrganizationID", "Name", (int)SelectedOrgID); 
      else 
       return new SelectList(OrgList, "OrganizationID", "Name"); 
     } 
+0

這就是參考類型在.NET中的工作方式。與您傳遞引用而不是值的值類型相反。因此他們的名字是:引用類型。 – 2011-12-22 08:22:45

+0

如何獲取剛纔的值並且不通過參考?請注意,我正在使用Ninject來注入會話存儲庫。 – scottrakes 2011-12-22 15:02:02

回答

2

創建一個IList參數並將組織轉換爲列表。