C# 在代码隐藏文件中声明全局变量
在下面的代码中,如何声明totalSquareFeet和其他变量为全局变量,以便在解析asp.net文本框中的数据时,其他方法可以访问它,特别是执行分析按钮方法 请注意,下面的代码不完整。我删除了大部分代码,使我的问题尽可能简单。为给您提供背景信息,以下是两个按钮的用途:C# 在代码隐藏文件中声明全局变量,c#,asp.net,C#,Asp.net,在下面的代码中,如何声明totalSquareFeet和其他变量为全局变量,以便在解析asp.net文本框中的数据时,其他方法可以访问它,特别是执行分析按钮方法 请注意,下面的代码不完整。我删除了大部分代码,使我的问题尽可能简单。为给您提供背景信息,以下是两个按钮的用途: 确定按钮\单击:从文本框(在asp.net webform中创建)获取数据,执行一些计算并在标签中显示结果 performAnalysisButton_单击:从上述文本框中获取数据,执行一些计算并在另一个文本框中显示结果
- 确定按钮\单击:从文本框(在asp.net webform中创建)获取数据,执行一些计算并在标签中显示结果
- performAnalysisButton_单击:从上述文本框中获取数据,执行一些计算并在另一个文本框中显示结果李>
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Create objects for fiscal year end dates (e.g. 12/31/17)
FiscalYearEnds fiscalYearEnds = new FiscalYearEnds();
firstFiscalYearEndLabel.Text = String.Format("{0:MM/dd/yyyy}", fiscalYearEnds.firstFiscalYearEndDate());
secondFiscalYearEndLabel.Text = String.Format("{0:MM/dd/yyyy}", fiscalYearEnds.secondFiscalYearEndDate());
}
protected void okButton_Click(object sender, EventArgs e)
{
// Parse values
int totalSquareFeet = int.Parse(totalSqFtTextBox.Text);
int totalOccupiedSquareFeet = int.Parse(occupiedSqFtTextBox.Text);
decimal grossRentsFirstYear = decimal.Parse(grossRentsFirstYearTextBox.Text);
decimal grossRentsSecondYear = decimal.Parse(grossRentsSecondYearTextBox.Text);
int loanAmount = int.Parse(loanAmountTextBox.Text);
double interestRate = double.Parse(interestRateTextBox.Text);
int loanTerm = int.Parse(yearlyLoanTermTextBox.Text);
}
protected void performAnalysisButton_Click(object sender, EventArgs e)
{
Analysis analysis = new Analysis();
analysis.GrossRentFirstYear = decimal.Parse(grossRentsFirstYearTextBox.Text);
analysis.GrossRentSecondYear = decimal.Parse(grossRentsSecondYearTextBox.Text);
analysisAndComments.Text = String.Format("{0}", analysis.PerformAnalysis());
}
}
如果我没弄错你的问题 要将变量声明为全局变量,只需在函数外部和正在使用的类内部声明它:
public partial class Default : System.Web.UI.Page
{
int totalSquareFeet = 0;
protected void Page_Load(object sender, EventsArg e)
{ // And the rest of the code should be the same...
}
// Same code as you had...
}
所以,这是关于从函数内部到外部删除声明的问题。如果我没弄错你的问题 要将变量声明为全局变量,只需在函数外部和正在使用的类内部声明它:
public partial class Default : System.Web.UI.Page
{
int totalSquareFeet = 0;
protected void Page_Load(object sender, EventsArg e)
{ // And the rest of the code should be the same...
}
// Same code as you had...
}
因此,它是关于从函数内部到外部删除声明。在往返之后,页面返回到客户端,除非将其保存在某个位置,否则服务器上不会保存任何信息。这意味着您可以将页面上的额外信息保存在hiddenfield中,也可以将其存储在会话或ViewState中 会话这将保存在服务器上(如果转到其他页面也可用) 然后,您可以在
performAnalysisButton\u单击
int totalSquareFeet = (int)Session["totalSquareFeet"];
如果你想在离开页面后清理会话变量,你可以这样做
Session[“totalSquareFeet”]=null代码>
ViewState这将保存在页面上(贷记到)
阅读
Hiddenfield这将保存在页面上
将其存储在
然后再读一遍
if(int.TryParse(HiddentotalSquareFeet.Value, out int totalSquareFeet)){
}
往返之后,页面返回到客户端,除非您将信息保存在某个位置,否则服务器上不会保存任何信息。这意味着您可以将页面上的额外信息保存在hiddenfield中,也可以将其存储在会话或ViewState中
会话这将保存在服务器上(如果转到其他页面也可用)
然后,您可以在performAnalysisButton\u单击
int totalSquareFeet = (int)Session["totalSquareFeet"];
如果你想在离开页面后清理会话变量,你可以这样做
Session[“totalSquareFeet”]=null代码>
ViewState这将保存在页面上(贷记到)
阅读
Hiddenfield这将保存在页面上
将其存储在
然后再读一遍
if(int.TryParse(HiddentotalSquareFeet.Value, out int totalSquareFeet)){
}
我通过在类级别声明属性解决了这个问题,这些属性成为了我的全局变量,我可以在button方法中访问它们。现在我不需要在按钮方法中再次解析文本框值。见下例:
public int totalSquareFeet
{
get { return int.Parse(totalSqFtTextBox.Text); }
set { int.Parse(totalSqFtTextBox.Text); }
}
我通过在类级别声明属性解决了这个问题,这些属性成为了我的全局变量,我可以在button方法中访问它们。现在我不需要在按钮方法中再次解析文本框值。见下例:
public int totalSquareFeet
{
get { return int.Parse(totalSqFtTextBox.Text); }
set { int.Parse(totalSqFtTextBox.Text); }
}
我不太清楚你的问题。也许您应该更详细地了解用户操作的流程,以及他如何填充这些文本框。您可以在默认类(任何方法之外)中将totalSquareFeets变量声明为私有字段,并在您想要的任何方法中对其进行修改,但我不建议使用这种方法,因为totalSquareFeets变量将与您的webform类一样有效。也许您可以访问performAnalysis操作中的totalSqFtTextBox.Text并再次解析它。看起来更自然。我在okButton_Click方法下声明的所有局部变量,我想在performAnalysisButton_Click方法下使用它们。我想知道是否有一种方法可以避免再次解析文本框数据?您是否正在构建一个一次只供一个人使用的网站?如果不是,您就不想考虑“全局变量”。每个用户的数据最终都会覆盖其他用户的值。是的,这将是一个由单个用户使用的简单应用程序。我还是编程新手。@Amit,有比全局变量更聪明的方法。如果您不想解析文本,您应该尝试使用比asp:TextBox更多的用户限制控件。例如,我使用了Telerik.RadNumericTextBox,它是一个只接受数值输入的派生类,您可以通过Value属性访问它。我不确定我是否很好地理解了您的问题。也许您应该更详细地了解用户操作的流程,以及他如何填充这些文本框。您可以在默认类(任何方法之外)中将totalSquareFeets变量声明为私有字段,并在您想要的任何方法中对其进行修改,但我不建议使用这种方法,因为totalSquareFeets变量将与您的webform类一样有效。也许您可以访问performAnalysis操作中的totalSqFtTextBox.Text并再次解析它。看起来更自然。我在okButton_Click方法下声明的所有局部变量,我想在performAnalysisButton_Click方法下使用它们。我想知道是否有一种方法可以避免再次解析文本框数据?您是否正在构建一个一次只供一个人使用的网站?如果不是,您就不想考虑“全局变量”。每个用户的数据最终都会覆盖其他用户的值。是的,这将是一个由单个用户使用的简单应用程序