ASP.NET Передача значений между классами с использованием интерфейса - PullRequest
1 голос
/ 06 сентября 2010

Я обычно использую реализацию STATIC при разработке настольного приложения, и мне просто бьют по голове, когда я использую STATIC в ASP.NET (не очень хорошая идея)

Мне кажется, я видел здесь некоторые отзывы, что вы можете использовать ИНТЕРФЕЙС для передачи значений между классами и страницами без использования Session.

Не могли бы вы, ребята, привести хороший пример того, как реализовать мой вопрос? Спасибо

вот мой пример кода

public interface ISessionManager
{
    SessionStates sesState { get; set; }
}

public struct SessionStates
{
    public string SessionID;
    public bool isLoggedIn;
    public string Username;
}

Ответы [ 2 ]

0 голосов
/ 06 сентября 2010

Во всяком случае, я решил сделать это по-другому, и я назвал это SessionManager.Я просто хочу отказаться от ввода имени переменной сеанса каждый раз, когда мне нужно его использовать, и это предотвращает неправильный ввод имени переменной сеанса ... так что я пришел к этому.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.SessionState;

public class SessionManager : IRequiresSessionState
{
    public SessionManager()
    {
    }

    string _sessionID = string.Empty;
    public string SessionID
    {
        get
        {
            if (Get("SessionID") == null) Save("SessionID", string.Empty);
            return Get("SessionID").ToString();
        }
        set
        {
            this._sessionID = value;
            Save("SessionID", value);
        }
    }

    bool _isLoggedIn = false;
    public bool isLoggedIn
    {
        get
        {
            if (Get("isLoggedIn") == null) Save("isLoggedIn", false);
            return Convert.ToBoolean(Get("isLoggedIn").ToString());
        }
        set
        {
            this._isLoggedIn = value;
            Save("isLoggedIn", value);
        }
    }

    string _username = string.Empty;
    public string Username
    {
        get
        {
            if (Get("Username") == null) Save("Username", string.Empty);
            return Get("Username").ToString();
        }
        set
        {
            this._username = value;
            Save("Username", value);
        }
    }

    int _selectedCID = 0;
    public int SelectedCID
    {
        get
        {
            if (Get("SelectedCID") == null) Save("SelectedCID", 0);
            return Convert.ToInt32(Get("SelectedCID"));
        }
        set
        {
            this._selectedCID = value;
            Save("SelectedCID", value);
        }
    }

    string _selectedCIDValPath = string.Empty;
    public string SelectedCIDValPath
    {
        get
        {
            if (Get("SelectedCIDValPath") == null) Save("SelectedCIDValPath", 0);
            return Get("SelectedCIDValPath").ToString();
        }
        set
        {
            this._selectedCIDValPath = value;
            Save("SelectedCIDValPath", value);
        }
    }

    #region methods
    void Save(string name, object value)
    {
        if (HttpContext.Current.Session[name] != null)
        {
            HttpContext.Current.Session[name] = value;
        }
        else
        {
            HttpContext.Current.Session.Add(name, value);
        }
    }
    object Get(string name)
    {
        return HttpContext.Current.Session[name];
    }
    #endregion
}
0 голосов
/ 06 сентября 2010

Использовать объекты состояния сеанса,

Session ["variable_name"] = присвоить любое значение в одном классе и использовать этот объект состояния сеанса в любом другом классе.

Например,

с использованием System.Web.SessionState;

// Сохранить значение в объекте состояния сеанса в одном классе

. * * Сессия 1 010 [ "SessionID"] = Request.QueryString.Get ( "session_key") ToString ();

// Использовать объект состояния сеанса в другом классе

String sessionid = Session ["sessionid"]. ToString ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...