0

ビューモデルをセッションに保存しようとしています。 データベースをビューモデルに保存し、ビューモデルの値をセッションに保存したい

私は使用しようとします

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

List<T>ビュー (Razor) では、そのリストに 2 つ以上のオブジェクト参照がある場合にトラバースするためにオブジェクトをキャストする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 に答える