C# 如何在视图状态下持久化DropDownList[]数组属性
我正在尝试创建DropDownList[]属性,并从视图状态获取设置值(目的是在回发期间保留动态DropDownList值,所有这些动态下拉列表都已选择了关联的DexChanged事件),我的代码如下:C# 如何在视图状态下持久化DropDownList[]数组属性,c#,asp.net,C#,Asp.net,我正在尝试创建DropDownList[]属性,并从视图状态获取设置值(目的是在回发期间保留动态DropDownList值,所有这些动态下拉列表都已选择了关联的DexChanged事件),我的代码如下: private DropDownList[] MyDDLArray { get { var value = ViewState["MyDDLArray"]; return (DropDownList[
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在发布我的问题时是一个输入错误,仍然不走运:(