公共变量的使用问题 asp.net
int housenum;protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}
public void Bind()
{
string houseid = Request.QueryString["housenum"].ToString();
Session["housenum"] = houseid;
housenum = Convert.ToInt16(Session["housenum"].ToString());
}
为什么当运行到Bind()的时候,传进的housenum=0,但是houseid=24(或者其他非零数值) --------------------编程问答-------------------- 把
housenum = Convert.ToInt16(Session["housenum"].ToString());
改为
housenum =Int16.Parse(houseid);
试试 --------------------编程问答-------------------- 你这个没有公共变量嘛,跟个断点看看吧,兄弟。 --------------------编程问答-------------------- 公共变量就是housenum,在方法外面有定义。 --------------------编程问答-------------------- if (!IsPostBack)
{
Bind();
}
说明只有在第一次访问时才执行Bind()内的东西。
可如果页面上其他的控件触发了PostBack,那么Bind()内的东西就不再执行了。
如果第一次访问的时候.aspx?housenum=24;而housenumber为0,那就是大白天见鬼了。
另:Convert.ToInt16(Session["housenum"]);就够了,不用ToString(). --------------------编程问答-------------------- 恩,正如namhyuk所说的,你首先需要确定Bind()方法是否被成功调用。
--------------------编程问答-------------------- int housenum;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}
public void Bind()
{
string houseid = Request.QueryString["housenum"].ToString();
Session["housenum"] = houseid;
housenum = Convert.ToInt16(Session["housenum"].ToString());
}
个人也遇到过这问题,最后解决了,但是原因自己不能确定
说一下自己的感觉,借lz让大家帮着看看,
根据int housenum 写的位置,housenum 是作为页面类的一个属性,不是一般意义上的变量,
每次请求该页面,服务器应该重新初始类(当然跟写的程序有关):整形的值,默认值确实是0
类初始在事件执行之前,等于说每次请求以后,housenum 都被重新初始,当然是0;
个人理解,应该是有问题的,新人关注中......希望高手指点
补充:.NET技术 , ASP.NET