为什么我的全局变量被重新初始化

时间:2014-06-09 16:29:26

标签: c# asp.net webforms

我将详细说明,我将一些标志(下面)设置为全局变量,以便我可以在整个C#程序中使用它们。我运行调试,似乎每次页面重新加载或Page_Load例程运行时,全局变量都会重新初始化。为什么,我该如何防止这种情况?

  public partial class MakePayment1 : System.Web.UI.UserControl
    {
        Queries Q = new Queries();
        decimal nopmt;
        decimal nopymts2;
        StringBuilder sb = new StringBuilder();
        string autopay;
        string ppol;
        string whydt;
        string ccEnd;
        string pmtType;
        bool credCard;
        bool nwCard;
        bool today;
        bool fdate;
        bool dueToday;
        bool dueTime;
        bool expTime;
        SessionVars SV = new SessionVars();
        string nxtpaymnt = "";
        string nxtpaymntDt = "";
      protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadPageData();
                getContractInfo();

1 个答案:

答案 0 :(得分:3)

C#没有实际的全局变量。也许你的意思是静态变量?如果是这样,你应该说静态变量来减少混淆。

每次加载页面时都会重新创建控件。所以你必须在某个地方坚持这些数据。通常在控件中,在请求之间保留数据的最佳方法是在ViewState中。

如果要保留某些数据,则必须使用ViewStateSessionApplication,本地文件或数据库等。当控件加载时,检索数据

我要提醒您不要在控件中使用除ViewState之外的任何内容:通常在控件中,您可能会使用控件打开两个选项卡。您可能不希望那些混合的数据,因为它可能会混淆用户。由于ViewState直接存储在页面上,因此不必担心它会混合。