Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在视图状态下持久化DropDownList[]数组属性_C#_Asp.net - Fatal编程技术网

C# 如何在视图状态下持久化DropDownList[]数组属性

C# 如何在视图状态下持久化DropDownList[]数组属性,c#,asp.net,C#,Asp.net,我正在尝试创建DropDownList[]属性,并从视图状态获取设置值(目的是在回发期间保留动态DropDownList值,所有这些动态下拉列表都已选择了关联的DexChanged事件),我的代码如下: private DropDownList[] MyDDLArray { get { var value = ViewState["MyDDLArray"]; return (DropDownList[

我正在尝试创建DropDownList[]属性,并从视图状态获取设置值(目的是在回发期间保留动态DropDownList值,所有这些动态下拉列表都已选择了关联的DexChanged事件),我的代码如下:

    private DropDownList[] MyDDLArray
    {
        get
        {
            var value = ViewState["MyDDLArray"];
            return (DropDownList[])value;
        }
        set
        {
            ViewState["MyDDLArray"] = value;
        }
    }
当我初始化一个值时,如:

 MyDDLArray[0] = new DropDownList();

我收到错误“System.NullReferenceException:对象引用未设置为对象的实例”

要解决问题,只需处理空值:

private DropDownList[] MyDDLArray
{
    get
    {
        if (ViewState["MyDDLArray"] == null) ViewState["MyDDLArray"] = new DropDownList[limit];
        return (DropDownList[])ViewState["MyDDLArray"];
    }
    set
    {
        ViewState["MyDDLArray"] = value;
    }
}

另一方面,数组并不好,除非你有固定数量的项目。另一种情况下,不要考虑调整数组大小的麻烦。

解决你的问题,你只需要处理空值:

private DropDownList[] MyDDLArray
{
    get
    {
        if (ViewState["MyDDLArray"] == null) ViewState["MyDDLArray"] = new DropDownList[limit];
        return (DropDownList[])ViewState["MyDDLArray"];
    }
    set
    {
        ViewState["MyDDLArray"] = value;
    }
}

另一方面,数组并不好,除非你有固定数量的项目。在另一种情况下,请考虑<代码>列表/代码>。您不需要调整数组的大小。< /p>您访问了两个不同的键:<代码> MyDDLArray < /代码>和<代码> SelectedUser < /代码>。为什么不尝试在setter中使用
MyDDLArray
@Nino在发布我的问题时是一个输入错误,仍然不走运:(您正在访问两个不同的键:
MyDDLArray
SelectedUser
。为什么不尝试在setter中使用
MyDDLArray
)@Nino在发布我的问题时是一个输入错误,仍然不走运:(