Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# cshtml文件中的KeyNotFoundException_C#_Asp.net_Razor - Fatal编程技术网

C# cshtml文件中的KeyNotFoundException

C# cshtml文件中的KeyNotFoundException,c#,asp.net,razor,C#,Asp.net,Razor,我正在asp.net应用程序中使用Razor。从我的控制器中,我将一本字典放入ViewBag,如下所示: Dictionary<int, RisposteUtente> mappaRisposte = (Dictionary<int, RisposteUtente>)Session["mappaRisposte"]; if (mappaRisposte == null) mappaRisposte = new Dic

我正在asp.net应用程序中使用Razor。从我的控制器中,我将一本字典放入ViewBag,如下所示:

Dictionary<int, RisposteUtente> mappaRisposte = (Dictionary<int, RisposteUtente>)Session["mappaRisposte"];
            if (mappaRisposte == null)
                mappaRisposte = new Dictionary<int, RisposteUtente>();
            ViewBag.mappaRisposte = mappaRisposte;

那么我该如何处理这种情况呢?

嗯,错误消息表明找不到指定的密钥。很有可能是您传入的
x.rowId
中的值在字典中无效/不存在;这基本上类似于数组索引越界错误。您应该首先检查密钥是否存在:

var dictionary=((dictionary)ViewBag.mappaRisposte);
var oggetto=dictionary.ContainsKey(x.rowId)?字典[x.rowId]:空;

您已经进行了空检查,因此这应该可以解决您的问题。

嗯,错误消息表明找不到指定的密钥。很有可能是您传入的
x.rowId
中的值在字典中无效/不存在;这基本上类似于数组索引越界错误。您应该首先检查密钥是否存在:

var dictionary=((dictionary)ViewBag.mappaRisposte);
var oggetto=dictionary.ContainsKey(x.rowId)?字典[x.rowId]:空;

您已经有了空检查,因此这应该可以解决您的问题。

或者您可以使用
TryGetValue
方法检查空键

而不是这个

var value = myDict[myKey];
更改为

if (!myDict.TryGetValue(myKey, out data)) {
    Debug.LogError("myDict doesn't have the value");
}
else {
    //do whatever you were planning to do
}
在您的情况下

var myDict = (Dictionary<int, RisposteUtente>)ViewBag.mappaRisposte;
var oggetto = myDict.TryGetValue(x.rowId, out data) ? data : null;
var myDict=(Dictionary)ViewBag.mappaRisposte;
var oggetto=myDict.TryGetValue(x.rowId,out数据)?数据:空;

或者您可以使用
TryGetValue
方法检查空键

而不是这个

var value = myDict[myKey];
更改为

if (!myDict.TryGetValue(myKey, out data)) {
    Debug.LogError("myDict doesn't have the value");
}
else {
    //do whatever you were planning to do
}
在您的情况下

var myDict = (Dictionary<int, RisposteUtente>)ViewBag.mappaRisposte;
var oggetto = myDict.TryGetValue(x.rowId, out data) ? data : null;
var myDict=(Dictionary)ViewBag.mappaRisposte;
var oggetto=myDict.TryGetValue(x.rowId,out数据)?数据:空;