我该如何在C# Web应用程序中设置全局变量?
我的需求是在某个页面(也许是主页面)上设置一个变量,并从任何页面访问该变量。
我不想使用缓存或会话。
我认为我需要使用 global.asax。有什么帮助吗?
我该如何在C# Web应用程序中设置全局变量?
我的需求是在某个页面(也许是主页面)上设置一个变量,并从任何页面访问该变量。
我不想使用缓存或会话。
我认为我需要使用 global.asax。有什么帮助吗?
使用公共的静态类并从任何地方访问它。
public static class MyGlobals {
public const string Prefix = "ID_"; // cannot change
public static int Total = 5; // can change because not const
}
可在主页或任何地方使用:
string strStuff = MyGlobals.Prefix + "something";
textBox1.Text = "total of " + MyGlobals.Total.ToString();
您不需要创建该类的实例,因为它是静态的。事实上,您无法创建该实例。只需直接使用它即可。静态类中的所有成员也必须是静态的。字符串“Prefix”未标记为静态,因为“const”天生就是静态的。public static class Globals {
public static class DbProcedures {
public const string Sp_Get_Addresses = "dbo.[Get_Addresses]";
public const string Sp_Get_Names = "dbo.[Get_First_Names]";
}
public static class Commands {
public const string Go = "go";
public const string SubmitPage = "submit_now";
}
}
并且可以这样访问它们:
MyDbCommand proc = new MyDbCommand( Globals.DbProcedures.Sp_Get_Addresses );
proc.Execute();
//or
string strCommand = Globals.Commands.Go;
我赞同jdk的回答:你应该把应用程序中任何一个类的公共静态成员视为“全局变量”。
但请注意,这是一个ASP.NET应用程序,因此它是一个多线程上下文,对于全局变量,您应该在更新和/或读取数据时使用一些锁定机制。否则,您可能会得到损坏状态的数据。
您可以在应用程序中创建一个从System.Web.UI.Page继承的基类。让所有页面都继承新创建的基类。向基类添加一个具有受保护访问修饰符的属性或变量,以便从应用程序中的所有页面访问它。
/// <summary>
/// Contains global variables for project.
/// </summary>
public static class GlobalVar
{
/// <summary>
/// Global variable that is constant.
/// </summary>
public const string GlobalString = "Important Text";
/// <summary>
/// Static value protected by access routine.
/// </summary>
static int _globalValue;
/// <summary>
/// Access routine for global variable.
/// </summary>
public static int GlobalValue
{
get
{
return _globalValue;
}
set
{
_globalValue = value;
}
}
/// <summary>
/// Global static field.
/// </summary>
public static bool GlobalBoolean;
}
在类的开头声明变量即可。
例如,对于字符串变量:
public partial class Login : System.Web.UI.Page
{
public string sError;
protected void Page_Load(object sender, EventArgs e)
{
//Page Load Code
}