我試圖從數據庫中動態加載導航菜單。我正在使用實體框架來提取數據。我已將菜單放置在自己的部分視圖中,該視圖被加載到共享佈局視圖中。當我運行應用程序時,在加載錯誤之前失敗,「在App_Web_h02ter44.dll中發生了類型'System.NullReferenceException'的異常,但未在用戶代碼中處理。附加信息:未將對象引用設置爲對象的實例「。MVC 5導航菜單模型不加載時,應用程序啓動
模型(NavigationMenuItem.cs)
using System;
using System.Collections.Generic;
public class NavigationMenuItem
{
public NavigationMenuItem()
{
this.NavigationMenuItems1 = new HashSet<NavigationMenuItem>();
}
public int MenuItemID { get; set; }
public Nullable<int> MenuItemParentID { get; set; }
public int MenuID { get; set; }
public string MenuItemName { get; set; }
public string MenuItemDescription { get; set; }
public string MenuItemText { get; set; }
}
控制器(NavigationMenuItemController.cs)
public class NavigationMenuItemController : Controller
{
private NorthwindEntityModel db = new NorthwindEntityModel();
// GET: /NavigationMenuItem/
public ActionResult Index()
{
var navigationmenuitems = db.NavigationMenuItems.Include(n => n.NavigationMenuItem1).Include(n => n.NavigationMenu);
return PartialView(navigationmenuitems.ToList());
}
}
_Layout.cshtml
<div class="col-md-4">
@Html.Partial("_NavigationBarPartial")
</div>
_NavigationBarPartial.cshtml
@model IEnumerable的
@foreach(在模型VAR項) { @ Html.DisplayFor(modelItem => item.MenuItemText) }UPDATE
更新:我創建了一個文件夾名爲NavigationMenu項目裏面的Index.cshtml視圖查看文件夾內。與上面發佈的_NavigationBarPartial.cshtml文件相同的代碼。然後,我將_Layout div標籤更改爲此
<div class="col-md-4">
@Html.Action("Index", "NavigationMenuItem")
</div>
現在我正按照預期從數據庫中提取菜單項。現在我需要回到使用原始的Shared/_NavigationBarBartial並使其像索引文件一樣工作。當我們從共享的局部視圖正確地調用控制器時,我顯然錯過了一些東西。除非我使用新的索引視圖來加載它,否則我不會在控制器的索引操作中觸發斷點。我想這是否與我是否使用Html.Partial,Html.Action等,然後我需要傳入的參數強制它調用正確的控制器,但我似乎無法弄清楚出。如果任何人都能發現那將會很好的問題。
我真的很感謝幫助!
更新:我在View文件夾內創建了一個名爲NavigationMenu Item的文件夾,裏面有一個Index.cshtml視圖。該視圖字面上包含與上面發佈的_NavigationBarPartial.cshtml文件相同的代碼。然後,我將_Layout div標記更改爲此