Asp.net mvc MVC4会话变量正在更新,我不知道';我不知道怎么做

Asp.net mvc MVC4会话变量正在更新,我不知道';我不知道怎么做,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个方法来检索会话变量,在本例中是组织。出于某种原因,当我调用get session方法get Organizations并将数据传递给SelectList方法以处理某些命名逻辑时,会话变量正在更新。我不想更新会话值,也不了解发生了什么。下面是所有的方法。我错过了什么 控制器方法: public ActionResult Create() { SignUpEventFormModel model = new SignUpEventFormModel()

我有一个方法来检索会话变量,在本例中是组织。出于某种原因,当我调用get session方法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");
        }
获取用户会话方法:

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");
        }
获取组织选择列表方法:

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");
        }
public SelectList GetOrgSelectList(IEnumerable Orgs,int?SelectedOrgID)
{
List OrgList=Orgs.ToList();
OrgList.Where(o=>!o.IsAdmin).ToList().ForEach(o=>o.Name=o.Name+“(需要权限请求)”;
如果(选择了orgid.HasValue)
返回新的SelectList(OrgList、“OrganizationID”、“Name”、(int)SelectedOrgID);
其他的
返回新的SelectList(OrgList,“OrganizationID”,“Name”);
}

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

这就是.NET中引用类型的工作方式。与值类型相反,您传递的是引用而不是值。因此它们的名称是:引用类型。如何只获取值而不传递引用?注意,我使用Ninject注入会话存储库。