天天看點

不可通路,因為它具有一定的保護級别(1)

日常生活中遇到的“不可通路,因為它具有一定的保護級别”錯誤,在此記錄友善日後翻閱。

情景:在控制器中定義一個Dictionary字典傳回對象,視圖中未對其進行轉型,并且由于拼寫錯誤寫錯了字段名(論壇中一位同學犯得錯誤)

Controllers代碼:

public ActionResult Index()
{
    var data = new Dictionary<string, object>();

    data.Add("a", 1);

    return View(data);
}
           

Views代碼:

@foreach (var item in Model.keys)
{
    <div>item</div>
}
           

錯誤資訊:

“System.Collections.Generic.Dictionary<string,object>.keys”不可通路,因為它具有一定的保護級别

問題解析:該問題是由于沒有良好習慣所緻,該問題在試圖中如果有以下代碼就會編譯不通過

@model Dictionary<string, object>
           

是以在程式設計中定義強語言類型會避免一些意想不到的問題。