将C#中的ViewState转换为布尔数组

3
我该如何将视图状态转换为布尔数组?
private bool[] clientCollapse
{
    get { return Convert.ToBoolean(ViewState["Collapse"]); }
    set { ViewState["Collapse"] = value; }
}

有什么想法吗?
6个回答

3
private bool[] clientCollapse
{
    get { return (bool[])ViewState["Collapse"]; }
    set { ViewState["Collapse"] = value; }
}

如果您仅使用此属性设置这些值,if语句将起作用,否则您可以使用其他类型,但强制转换将无法起作用。

顺便提一下,C#的常见命名约定要求属性名称以大写字母开头:ClientCollapse


1

尝试将您的getter更改为:

get { return ViewState["Collapse"] as bool[]; }

如果未设置,这将返回 null。


1
你应该使用强制类型转换来完成这个操作:
private bool [] clientCollapse
{
    get { return (bool[]) ViewState["Collapse"]); }
    set { ViewState["Collapse"] = value; }
}

ASP.NET的视图状态序列化会为您完成其余工作。


1
你可以做到这个:
private bool[] clientCollapse
{
    get { return (bool[])ViewState["Collapse"] ?? new bool[0]; }
    set { ViewState["Collapse"] = value; }
}

1
private bool [] clientCollapse
{
    get { return (ViewState["Collapse"] as bool[]); }
    set { ViewState["Collapse"]; }
}

1

您可以使用扩展方法,以便使用 ViewState<byte[]>.GetTypedData(key)

public static class ViewStateExtensions
    {

         public static T GetTypedData<T>(this StateBag bag, string key)
         {
             return (T) bag[key];
         }

         public static void SetTypedData<T>(this StateBag bag, string key, T value)
         {
             bag[key] = value;
         }

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接