当前位置:编程学习 > C#/ASP.NET >>

公共变量的使用问题 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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,