我想在我的asp.net mvc 3视图中使用一些虚拟数据.以下代码是应将数据传递给视图的控制器的一部分.
List<KeyValuePair<int, int>> dummyData = new List<KeyValuePair<int, int>>();
dummyData.Add(new KeyValuePair<int, int>(1,1));
dummyData.Add(new KeyValuePair<int, int>(1,2));
dummyData.Add(new KeyValuePair<int, int>(2,1));
dummyData.Add(new KeyValuePair<int, int>(3,1));
dummyData.Add(new KeyValuePair<int, int>(4,1));
dummyData.Add(new KeyValuePair<int, int>(4,2));
dummyData.Add(new KeyValuePair<int, int>(4,3));
dummyData.Add(new KeyValuePair<int, int>(4,4));
Run Code Online (Sandbox Code Playgroud)
顾名思义,这是我的虚拟数据.这背后的想法是第一个数字表示RowNumber形式表,第二个数字表示ColumnNumber.我想以某种方式组合与同一行相关但具有不同ColumnNumbers的记录.为此,我选择使用二维数组:
int dummyCount = dummyData.Count;
List<KeyValuePair<int, int>>[,] dummyArray = new List<KeyValuePair<int, int>>[dummyCount,dummyCount];
int index1 = -1;
int index2 = 0;
for (int i = 0; i < dummyCount; i++)
{
int tempColNum = 1;
if (dummyData[i].Value != tempColNum)
{
dummyArray[index1, index2].Add(dummyData[i]);
index2++;
}
else
{
index1++;
index2 = 0;
dummyArray[index1, index2].Add(new KeyValuePair<int, int>(dummyData[i].Key, dummyData[i].Value));
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我到达这里时:dummyArray[index1, index2].Add(new KeyValuePair<int, int>(dummyData[i].Key, dummyData[i].Value));我从标题中得到错误:Object reference not set to an instance of an object..本来我只尝试dummyArray[index1, index2].Add(dummyData[i]);但得到了同样的错误.
您的虚拟阵列未初始化.所有单元格均为空.您需要在每个单元格中创建列表,如下所示:
if (dummyArray[index1, index2] == null)
dummyArray[index1, index2] = new List<KeyValuePair<int, int>>()
Run Code Online (Sandbox Code Playgroud)
此外,您的代码有可能无效索引引用.如果在第一个周期
if (dummyData[i].Value != tempColNum)
Run Code Online (Sandbox Code Playgroud)
将评估为true,您将尝试从索引[-1,0]处的虚拟数组中提取元素
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |