1

我有一个检索会话变量的方法,在这种情况下是组织。出于某种原因,当我调用 get 会话方法 get Organizations 并将数据传递给 SelectList 方法以处理一些命名逻辑时,会话变量正在更新。我不希望更新会话值并且不了解正在发生的事情。以下是所有方法。我错过了什么?

控制器方法:

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");
        }
4

1 回答 1

2

创建了 IList 参数并将组织转换为列表。

于 2012-01-01T15:36:04.950 回答