【发布时间】:2015-10-01 16:46:33
【问题描述】:
我是 ASP.net 的初学者。我最近使用以下代码创建了一些 Web 表单应用程序:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainForm.aspx.cs" Inherits="TestAssignVariable.MainForm" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="CHECK" OnClick="Check_Data" />
<asp:Label ID="ketCekData" runat="server" Text="Label"></asp:Label>
</div>
<div>
<asp:Button ID="Button2" runat="server" Text="ASSIGN" OnClick="Assign_Data" />
<asp:Label ID="labelProcess" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
以及后面的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestAssignVariable
{
public partial class MainForm : System.Web.UI.Page
{
private string file_path = "startx";
int a = 12;
private string FilePath
{
get
{
return file_path;
}
set
{
file_path = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Check_Data(object sender, EventArgs e)
{
ketCekData.Text = a.ToString() ;
}
protected void Assign_Data(object sender, EventArgs e)
{
// FilePath = "AWESOME";
a = 100;
labelProcess.Text = "Data Assigned";
}
}
}
所以有两个 ID 为 Button1 和 Button2 的按钮。当点击Button2 时,它会触发一个事件,将变量a 的值从12 更改为100。 Button1 然后在标签ketChekData 上显示变量a 的值。因此,当我单击Button2 后跟Button1 时,标签ketCekData 中必须显示100。但我不明白为什么这不起作用:标签ketCekData 上仍然显示12。
【问题讨论】:
-
您在全局级别分配
a值,因此每个postback值都将重置为12 -
以
int a为静态。请阅读一些与页面生命周期相关的博客。每次回发时分配给int a的值都会丢失。使用 static 保留更改,但仅在应用程序级别执行此操作。 -
那我必须做什么?你能给我一些即时文章来解释吗?我的电脑上有一本关于 asp.net 的书,有 900 页。我无法浏览每一页来找到解释。
-
您希望该值(即 12)用于另一个
page -
@Suprabhat - 您应该避免在 asp.net 应用程序中使用
static变量。
标签: asp.net