7

私はMVC-3に取り組んでいます。私の見解では、次の例外に直面しています。

cannot perform runtime binding on a null reference

モデルクラス

    public class HomeModel
    {
        public IEnumerable<Html> Template { get; set; }
    }

コードを表示

@model Project.Models.HomeModel 

    @{
        ViewBag.Title = "Home Page";
        int i = 0;
    }
    <div class="container">
            @foreach (var e in Model.Template)    //getting exception on this foreach loop
            {
                 //loop content    
            }
    </div>

コントローラ

public ActionResult Index()
{
    HomeModel model = new HomeModel();

    model.Template = db.Templates();

    return View(model);
}

私の見解はHomeModelモデルクラスに強く型付けされています。誰かが私がこれを解決するのを手伝ってくれますか?

4

1 に答える 1

8

これは、LINQの実行が延期されたためです。Model.Templateの結果は、それらにアクセスしようとするまで計算されません。この場合、db.Templateはビューの範囲外です。ToList()toToArray()ToDictionary()withを使用してそれを行うことができますdb.Templates

コントローラのコードは次のようになります。

public ActionResult Index()
{
    HomeModel model = new HomeModel();

    model.Template = db.Templates.ToList();

    return View(model);
}
于 2012-12-19T23:19:12.573 に答える