我将详细说明,我将一些标志(下面)设置为全局变量,以便我可以在整个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();
答案 0 :(得分:3)
C#没有实际的全局变量。也许你的意思是静态变量?如果是这样,你应该说静态变量来减少混淆。
每次加载页面时都会重新创建控件。所以你必须在某个地方坚持这些数据。通常在控件中,在请求之间保留数据的最佳方法是在ViewState中。
如果要保留某些数据,则必须使用ViewState,Session,Application,本地文件或数据库等。当控件加载时,检索数据
我要提醒您不要在控件中使用除ViewState之外的任何内容:通常在控件中,您可能会使用控件打开两个选项卡。您可能不希望那些混合的数据,因为它可能会混淆用户。由于ViewState直接存储在页面上,因此不必担心它会混合。