2016-05-27 3 views
1

У меня есть вспомогательный класс для сессиииспользование сеансов в MVC

namespace ShopCart.BAL 
{ 
    public static class SessionHelper 
    { 
     public static ShopUser myShopUser 
     { 
      get 
      { 
       return HttpContext.Current.Session["myShopUser"] as ShopUser; 
      } 

      set 
      { 
       HttpContext.Current.Session["myShopUser"] = value; 
      } 
     } 


    } 

} 

Далее класс ShopUser выглядит

public class ShopUser 
{ 

    public string LoginID { get; set; } 
    public string SessionID { get; set; } 

    public long UserId { get; set; } 

    public long ShoppingCartId { get; set; } 

    public bool? Status { get; set; } 

} 

Теперь я хочу знать, как установить сеанс для конкретного свойства? SessionHelper.Status = false; // создает новое свойство в SessionHelper Как использовать классы выше для создания сеансов?

@mohsen Ваш ответ правильный. Кроме того,

public ActionResult Index() { 
ShopLogin objShopLogin = new ShopLogin(); 
objShopLogin .checkUser(); 
} 

public class ShopLogin { 
    public string checkUser() 
    { 
    SessionHelper.myShopUser.Status = false; 
    } 
} 

Так как вы можете видеть, я создаю объект класса здесь, как ShopLogin objShopLogin = новый ShopLogin(); Можете ли вы сказать мне, могу ли я использовать инъекцию зависимостей здесь, чтобы избежать создания таких объектов класса?

+0

Благодаря @mohsen, это работает. Можете ли вы сказать мне, как добавить инъекцию зависимостей (nInject), так что мне не нужно создавать «новый» объект. ShopUser objShopUser = новый ShopUser(); public string checkUser() { SessionHelper.myShopUser.Status = false; } –

+0

public Показатель действительного действия() { ShopUser objShopUser = новый ShopUser(); objShopUser.checkUser(); } А потом общественный класс Логин { строка CheckUser общественности() { SessionHelper.myShopUser.Status = ложь; } } Я хочу, чтобы избежать создания объекта класса, как 'ShopUser objShopUser = новый ShopUser()' Могу ли я использовать инъекции зависимостей здесь (Ninject), чтобы избежать создания нового объекта и достижения той же функциональности –

+0

Что делать ты имеешь в виду ? – mohsen

ответ

2

Использование

SessionHelper.myShopUser.Status = false 

Редактировать

Да. Просто добавьте static модификатор CheckUser метода

public ActionResult Index() { 
ShopLogin.checkUser(); 
} 

public class ShopLogin { 
    public static string checkUser() 
    { 
     SessionHelper.myShopUser.Status = false; 
    } 
} 
+0

(SessionHelper.myShopUser.Status == NULL) бросает nullreference за исключением –

+0

CheckUser() находится в другом классе, он находится в «Вход» So SessionHelper.myShopUser.checkUser() ; не будет работать –

+0

SessionHelper.myShopUser.Status = false; также выбрасывает исключение nullreference –

Смежные вопросы