ASP.NET使用interface在类之间传递值

时间:2010-09-06 02:23:15

标签: asp.net interface

我在开发桌面应用程序时经常使用STATIC实现,当我在ASP.NET中使用STATIC时,我的头撞到了墙上(不是一个好主意)

我想我之前看到了一些反馈,您可以使用INTERFACE在不使用Session的情况下在类和页面之间传递值。

你们能举一个很好的例子来说明如何实现我的问题吗?感谢

这是我的示例代码

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

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

2 个答案:

答案 0 :(得分:0)

使用会话状态对象

Session [“variable_name”] =在一个类中分配任何值,并在任何其他类中使用此会话状态对象。

例如,

使用System.Web.SessionState;

//将会话状态对象中的值存储在一个类

会话[ “的sessionid”] = Request.QueryString.Get( “session_key可以”)的ToString();

//在另一个类中使用会话状态对象

String sessionid = Session [“sessionid”]。ToString();

答案 1 :(得分:0)

无论如何,我决定以另一种方式做到这一点,我称之为SessionManager。我只是想在每次使用它时都不想输入Session变量名,这是为了防止会话变量名称的错误输入..所以这就是我的意思。

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
}