asp.net AJAX页面中的自加自减问题,急
我在学习asp.net,VS2008环境新建的页面是AJAX页面,一个BUtton,一个TextBox计划是按一下Button,intC执行一次C++,然后在textbo...
我在学习asp.net,VS2008环境
新建的页面是AJAX页面,一个BUtton,一个TextBox
计划是按一下Button,int C 执行一次C++,然后在textbox里显示
代码如下
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
public int C;
protected void Page_Load(object sender, EventArgs e)
{
// C = 1;
if (IsPostBack)
{
C = 1;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//if (!IsPostBack)
//{
// C = 1;
TextBox1.Text = C.ToString();
C++;
//}
}
}
但是就是不自加
各位给看看哪里有问题 展开
新建的页面是AJAX页面,一个BUtton,一个TextBox
计划是按一下Button,int C 执行一次C++,然后在textbox里显示
代码如下
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
public int C;
protected void Page_Load(object sender, EventArgs e)
{
// C = 1;
if (IsPostBack)
{
C = 1;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//if (!IsPostBack)
//{
// C = 1;
TextBox1.Text = C.ToString();
C++;
//}
}
}
但是就是不自加
各位给看看哪里有问题 展开
4个回答
展开全部
首先说 你这个程序和 ajax一点儿关系都没有
其次告诉你为啥不自加
你每次单击按钮 服务器都会重新加载一次页面,对象会被重新创建,也就是说c会被重新初始化一次 因此他一直是初值(这里你没设初值 就是0)
为了保证c 不会每次在页面对象重新创建时被重新初始化 需要将c设置为static
也就是
public static int c
另外一处错误就是
if (IsPostBack)
{
C = 1;
}
这个代码 每次postback 都会自动让c变为1 而每次按钮按下去 都会引发postback 这样 c永远是1
因此 应该修改为
if ( !IsPostBack) //注意是 !postbakc 而不是postback
{
C = 1;
}
这样完正的代码就是这样的
public static int C;
protected void Page_Load(object sender, EventArgs e)
{
if (! IsPostBack)
{
C = 1;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = C.ToString();
C++;
}
其次告诉你为啥不自加
你每次单击按钮 服务器都会重新加载一次页面,对象会被重新创建,也就是说c会被重新初始化一次 因此他一直是初值(这里你没设初值 就是0)
为了保证c 不会每次在页面对象重新创建时被重新初始化 需要将c设置为static
也就是
public static int c
另外一处错误就是
if (IsPostBack)
{
C = 1;
}
这个代码 每次postback 都会自动让c变为1 而每次按钮按下去 都会引发postback 这样 c永远是1
因此 应该修改为
if ( !IsPostBack) //注意是 !postbakc 而不是postback
{
C = 1;
}
这样完正的代码就是这样的
public static int C;
protected void Page_Load(object sender, EventArgs e)
{
if (! IsPostBack)
{
C = 1;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = C.ToString();
C++;
}
展开全部
你这个变量在回传到服务器端的时候它的值是保留不下来的,可以页面的VIEWSTATE中。
public partial class _Default : System.Web.UI.Page
{
private int C
{
get{
if(ViewState["VSC"]==null)
return 0;
return (int)ViewState["VSC"];
}
set{ViewState["VSC"]=value;}
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
C = 1;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = C.ToString();
C++;
}
}
另:使用静态对象可能会导致同步问题
public partial class _Default : System.Web.UI.Page
{
private int C
{
get{
if(ViewState["VSC"]==null)
return 0;
return (int)ViewState["VSC"];
}
set{ViewState["VSC"]=value;}
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
C = 1;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = C.ToString();
C++;
}
}
另:使用静态对象可能会导致同步问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的c 不是全局的变量每次读取页面都重新赋值了 你可以存到ViewStat 里面 然后 每次读取出来 ++ 在存回去
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这问题有些严重啊,你是刚开始学吧,楼上的讲的很详细,希望你多多努力
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询