我在开发桌面应用程序时经常使用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; }
答案 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 }