0

我已经尝试将我的视图模型存储到会话中。 我将我的数据库存储到 viewmodel,我想将 viewmodel 值保存到会话

我尝试使用

List<GetUserNameViewModel> getName = _accountService.GetLoginName(UserID)
                Session["GetName"] = getName;

但价值是

System.Collections.Generic.List`1[XNet.Repository.Model.GetUserNameViewModel], not Username...

如何将我的视图模型值保存到会话?

这是我的服务

public List<GetUserNameViewModel> GetLoginName(int UserID)
        {
            List<User> user = (from d in _UserRepository.All()
                               where d.UserID == UserID
                               select d).ToList();

            List<GetUserNameViewModel> GetName = new List<GetUserNameViewModel>();

            foreach (User users in user)
            {
                GetName.Add(new GetUserNameViewModel
                    {
                        UserName = users.UserName
                    });
            }
            return GetName;
        }

我的控制器

   public ActionResult Index()
        {
            int UserID = Convert.ToInt32(User.Identity.Name);
            List<GetUserNameViewModel> getName = _accountService.GetLoginName(UserID);
                Session["GetName"] = getName;
            return View();
        }
4

1 回答 1

2

在视图(Razor)中,您必须强制转换对象以遍历该List<T>列表是否具有两个或多个GetUserNameViewModel对象引用,或者仅调用FirstOrDefault()方法从List<T>,

@{
  List<GetUserNameViewModel> getNames =  Session["GetName"] as List<GetUserNameViewModel>;

  for(var name in getNames){
     //statements
  }

 //Or
 GetUserNameViewModel name = getNames.FirstOrDefault();

}

在其他情况下,更改GetLoginName方法。我认为GetLoginName方法应该返回一个对象而不是List<T>.

public GetUserNameViewModel GetLoginName(int UserID)
 {
   User user = (from d in _UserRepository.All()
                     where d.UserID == UserID
                     select d).FirstOrDefault();

  if(user==null)
      return null;

  return new GetUserNameViewModel() { UserName = user.UserName };
 }
于 2013-07-02T03:25:45.810 回答