我已经尝试将我的viewmodel存储到会话中。 我将我的数据库存储到viewmodel,我想将viewmodel值保存到会话
我尝试使用
List<GetUserNameViewModel> getName = _accountService.GetLoginName(UserID)
Session["GetName"] = getName;
但价值是
System.Collections.Generic.List`1[XNet.Repository.Model.GetUserNameViewModel], not Username...
如何将viewmodel值保存到session ??
这是我的服务
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 :(得分: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 };
}