2013-07-02 3 views
0

Я уже пытаюсь сохранить мою модель просмотра для сеанса. я храню базу данных для ViewModel, и я хочу, чтобы сохранить ViewModel значение сессииКак сохранить значение модели представления для сеанса

я пытаюсь использовать

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

но значение

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

как я могу спасти мой ViewModel значение для сеанса ??

это моя служба

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

В представлении (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 }; 
} 
Смежные вопросы