2013-07-02 44 views
0

我已經嘗試將我的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(); 
     } 
+0

我想在GetUserNameViewModel中獲得用戶名的值 –

回答

2

在View(剃刀),你投的對象以遍歷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 }; 
}