簡體   English   中英

如何從 Controller 獲取字典?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM