我之前的用了很多Static,改的也很多呀

解决方案 »

  1.   

    return ViewState["Enabled"]==null ????
      

  2.   

    do you mean?? (anyway, your naming convention is very confusing)
    public bool Enabled
    {
    get
    {
    return ViewState["Enabled"] != null;
    }
    set
    {
    if(value)
                               ViewState["Enabled"] = 1;
    else
    ViewState.Remove("Enabled");
    }
    }or you should be doingpublic bool Enabled
    {
    get
    {
                      if (ViewState["Enabled"] == null)
                          return false; return (bool)ViewState["Enabled"];
    }
    set
    {
        ViewState["Enabled"] = value;
    }
    }
      

  3.   

    to:saucer(思归, MS .NET MVP) 
    不是类型的原因。
    实际上语法没有问题,我以前写的东西都用这个。也没有什么问题。
    开始的时候我觉得这样会很省ViewState。
    但是就昨天我才发现它的一个bug..另我的控件发生不同的行为(555,以后都不这样写了)所以才发个帖上来。考考大家。。你帖的第二段代码是正确的。但我发帖是想大家都能找出我原来写法的bug而已。
      

  4.   

    哦。。还有。你的两段代码把默认值弄反了。。Enabled默认为true的。
    (不过这个和bug没有关系)
      

  5.   

    还有
    ( your naming convention is very confusing )
    是什么意思啊?
    我英文很差的~~~~~
      

  6.   

    lostinetdotcom(思考=储存+选择+变异) 究竟是什么bug你就快说吧,别吊大家胃口了
      

  7.   

    controls derived from WebControl have a property named Enabledpublic bool Enabled  <----属性是
      return ViewState["Enabled"]==null;  <---其实是不Enabled固然是小聪明,但让人糊涂/迷惑,不是好编码
      

  8.   

    原来你说这个啊。。
    这个没有问题的。
    我只是举个例子而已。想不到你想到那个去了。
    那些控件的Enabled是它们自己的实现嘛,和我这个没有关系的~~~
    我平时是这样的:public class MyControl : Control
    {
    class vs
    {
    public const string ShowPager="sp";
    }
    public bool ShowPager
    {
    get
    {
    return ViewState[vs.ShowPager]==null;
    }
    set
    {
    if(value)
    ViewState.Remove(vs.ShowPager);
    else
    ViewState[vs.ShowPager]=0;
    }
    }
    }这也是我个人自己的写法而已。
    问题是出在ViewState.Remove上的。其实也就几行代码而已嘛。不过其中的确有bug
    原以为用ViewState.Remove(vs.ShowPager);把该项去掉,那么就能另ShowPager恢复为true ,
    但是实际上PostBack后,ShowPager的值和预期的不同。我不是故意弄上来为难别人。其实这也算个思考题,可以研究一下,那样会对ViewState的使用增加经验的。
      

  9.   

    cannot reproduce what you are saying, <script language="C#" runat="server">
    public bool Enabled
    {
    get
    {
    return ViewState["Enabled"]==null;
    }
    set
    {
    if(value)
    ViewState.Remove("Enabled");
    else
    ViewState["Enabled"]=1;
    }
    }void SetView(Object o, EventArgs e)
    {
      Button b = (Button)o;
      Response.Write(b.Text + " is clicked<BR>");
      Response.Write("Before:" + Enabled.ToString() + "<BR>");
      Enabled = b == btnTrue;
      Response.Write("After:" + Enabled.ToString());
    }void Check(Object o, EventArgs e)
    {
      Button b = (Button)o;
      Response.Write(b.Text + " is clicked<BR>");
      Response.Write("Current:" + Enabled.ToString() + "<BR>");
     
    }</script>
    <form runat="Server">
    <asp:Button id="btnTrue" runat="Server" Text="True" Onclick="SetView"/>
    <asp:Button id="btnFalse" runat="Server" Text="False" onclick="SetView"/>
    <asp:Button id="btnCheck" runat="Server" Text="Check" onclick="Check"/>
    </form>
      

  10.   

    ViewState是什么意思?上边的贴我一点都不懂,哪位大侠详细说说