大家帮忙看一下, 这个成员变量访问的时候, 怎么取值总是不变呢?
C# Code:public partial class SupplierInfo : MacBase
{
// 分页参数
public int myNextID = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// 标准参数传递
// 测试一: 通过参数传递
myNextID = int.Parse(Request.QueryString["ID"]);
// 测试二: 直接赋值
myNextID = 100;
}
}
protected void BtnNext_Click(object sender, EventArgs e)
{
// 问题, 这里访问的时候, myNextID总是等于0, 为什么呢? 该如何修改
Response.Write("BtnNext_Click..." + this.myNextID);
Response.End();
}
}
// 附加说明: 因为该页面, 会有多个用户同时访问, 所以没有使用public static int myNextID = 0; --------------------编程问答-------------------- 点击按扭时,发生的动作是PostBack.也就是不会执行if (!Page.IsPostBack) 里的语句。 --------------------编程问答-------------------- 这样只能是0;因为你每次单击按钮都现执行public int myNextID = 0;
然后再执行按钮事件 --------------------编程问答-------------------- web 和 win 不同
每次请求页面的类会重新走构造函数的;
所以你的变量永远会被重新变回 0 --------------------编程问答--------------------
能不能提供解决的方法啊. --------------------编程问答--------------------
总会有解决的办法吧, 大家平时没有遇到过吗? --------------------编程问答-------------------- 放ViewState里面
public partial class SupplierInfo : MacBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.ViewState["NextID"] = Request.QueryString["ID"];
}
}
protected void BtnNext_Click(object sender, EventArgs e)
{
Response.Write("BtnNext_Click..." + this.ViewState["NextID"].ToString());
Response.End();
}
}
--------------------编程问答-------------------- protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
myNextID = 0;
} else {
myNextID = int.Parse(Request.QueryString["ID"]);
}
}
--------------------编程问答-------------------- --------------------编程问答-------------------- 把它定义为static就可以了 --------------------编程问答--------------------
不能用static啊, 否则多用户访问的时候, 变量就会因为共享而混乱。 --------------------编程问答-------------------- 写个赋值的方法
public int myNextID = 0;
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Setvalue();
}
}
private void Setvalue()
{
if (string.IsNullOrEmpty(Request.QueryString["ID"]))
{
myNextID = 100;
}
else
{
myNextID = Convert.ToInt32(Request.QueryString["ID"]);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Setvalue();
Response.Write("Button1_Click..." + this.myNextID);
Response.End();
}
补充:.NET技术 , ASP.NET