C# cshtml文件中的KeyNotFoundException
我正在asp.net应用程序中使用Razor。从我的控制器中,我将一本字典放入ViewBag,如下所示: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
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数据)?数据:空;