[英]How to get a dictionary from Controller?
我有三個班。 第一個 class 調用數據 class 的 AddInfo 方法。 然后數據 class 實例化字典。 最后,controller class調用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);
}
}
您的“數據”object 參考是在您的 HomeController class 中創建的:
Data d = new Data();
然后幾乎立即在您嘗試在以下行訪問它:
var Info = getDic["First"];
您絕不會調用d.AddInfo("first", testObject)
或類似的東西。
如果您在其他地方有另一個 Data class 實例,請記住這是兩個完全獨立的對象,因此不共享同一個字典。
如果你有一個 Data class 的實例在更高的地方創建,那么一個可能的解決方案可能是你需要將它傳遞給 Index 方法,如下所示:
public IActionResult Index(IData d)
{
var getDic = d.getDictionary();
var Info = getDic["First"];
return View(Info);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.