c# - 如何从控制器中获取字典?
问题描述
我有三个班。第一个类调用Data 类的AddInfo 方法。然后 Data 类实例化字典。最后,控制器类调用 getDictionary 方法。它给了我一个错误:KeyNotFoundException:字典中不存在给定的键“信息”。
家庭控制器.cs
public IActionResult Index()
{
Data d = new Data();
var getDic = d.getDictionary();
var Info = getDic["First"];
return View(Info);
}
数据.cs
public interface IData
{
Dictionary<string, object> getDictionary();
void AddInfo(string infoName, TheObject obj);
}
public class Data : IData
{
public Dictionary<string, object> infoList;
public Data()
{
infoList = new Dictionary<string, object>();
}
public Dictionary<string, object> getDictionary()
{
return this.infoList;
}
public void AddInfo(string infoName, TheObject obj)
{
infoList.Add(infoName, obj);
}
}
解决方案
您的“数据”对象引用是在您的 HomeController 类中的这一行中创建的:
Data d = new Data();
然后几乎立即在您尝试在以下行访问它:
var Info = getDic["First"];
您绝不会打电话d.AddInfo("first", testObject)
或做任何类似的事情。
如果您在其他地方有另一个 Data 类的实例,请记住它们是两个完全独立的对象,因此不共享同一个字典。
如果您在更高的其他地方创建了 Data 类的实例,那么可能的解决方案可能是您需要将其传递给 Index 方法,如下所示:
public IActionResult Index(IData d)
{
var getDic = d.getDictionary();
var Info = getDic["First"];
return View(Info);
}
推荐阅读
- typescript - 当不同网络上的对等点时,RTCPeerConnection 失败
- python - 如何访问驻留在包含的子模块中的 pytest 固定装置?
- twitter - 用于检索用户一天内发布的推文总数的 Twitter 端点
- android - 将多个项目添加到 SQLite 数据库 Android
- python - 如何增加 CNN(Unet)模型的层(深度)
- inline - 背包 laravel 中的内联创建
- javascript - React 组件可重用性:相同的代码来包装 2 个不同的组件
- javascript - 检测 DOM 中 Web 组件的安装
- json - jq - 将传递的参数与字符串连接起来
- python - 如何在 matplotlib 的内部结构中找到散点数据?