第一种方式
protected int i
    {
        set { Session["i"] = value; }
        get { return Session["i"] as int; }
    }
这种方式不行,因为int的0和Session["i"]的null没法区分,编译器就告诉你不行。
第二种方式
protected int i
    {
        set { Session["i"] = value.toString(); }
        get { return int.Parse(Session["i"] as string); }
    }
这种方式可行,但效率不高,每次要用i值,都要调用一次解析函数。第三种方式
    protected void Page_Load(object sender, EventArgs e)
    {
        i= int.Parse(Session["i"] as string);
    }
protected int i;这种方式,如果把调用i放在[AjaxPro.AjaxMethod]里,始终得到的是0;
    [AjaxPro.AjaxMethod]
    public int GetI()
{
    //这里查看i值,始终是0
}到底有没有可行的解决办法啊

解决方案 »

  1.   


    protected int I
      {
      set { Session["i"] = value; }
      get { return Convert.ToInt32(Session["i"]); }
      }
      

  2.   

    protected int i
    {
      set { Session["i"] = value; }
      get { 
        int defaultValue = 0;
        var val = Session["i"];
        return val == null ? defaultValue : (int)val ;
      }
    }
      

  3.   

    protected int I
      {
      set { Session["i"] = value; }
      get { return Session["i"]==null?0:(int)Session["i"]; }
      }
      

  4.   

    哎,放弃吧太纠结了是玩不好计算机滴学计算机滴一定要知道,什么地方值得研究,什么地方不值得研究。还是把你的那些时间多放在值得研究的地方吧。国际大公司devxpress的标准写法    public int Name
            {
                get
                {
                    object name = Session["Name"];
                    if (name != null)
                        return (int)name;
                    else
                        return 0;
                }
                set
                {
                    Session["Name"] = value;
                }
            }说实话,这东西不值得你花时间纠结滴
      

  5.   

    ps一下:上面这段代码看着挺多实际上他是devxpress的coderush代码段,只需要敲 psi+空格 ,就可以自动完成滴另外[AjaxPro.AjaxMethod] 默认是不可以引用session滴,所以你总是0,你需要在特性里指明可以使用session,他才会得到session值