我是 mvc 新手。
我想要做的是从数据库加载菜单并在部分 View 中显示它。这个局部 View 将从 _layout View 中调用。
家庭 Controller
在 Home Controller 中,我添加了一个名为“_MainMenu”的操作
public class HomeController : Controller
{
mrpDatabase _db = new mrpDatabase();
public ActionResult _MainMenu()
{
return PartialView("_MainMenu", _db.menu.ToList());
}
....
}
局部查看
这是我的 _MainMenu PartialView
@model IEnumerable<appMRP.Models.menu>
<ul id="menu">
@foreach (var item in Model)
{
<li>@item.menu1</li>
}
</ul>
版面页面
这个部分菜单显示在我的 _Layout.cshtml 中
<nav>
@Html.Partial("_MainMenu")
</nav>
当我运行这个。我有错误
" 用户代码未处理 NullReferenceException。
未将对象引用设置为对象的实例 ”
似乎我的 _MainMenu 中的“模型”为空
我做错了什么 ?
谢谢你
最佳答案
如果您的局部 View 使用模型,则需要像这样传递它:
@Html.Partial("_MainMenu", Model.ListOfMenus)
或类似的东西。目前,您没有为
_MainMenu
指定模型。查看,所以null
用来。当您尝试使用 @foreach
时,它会抛出您看到的异常。请注意
@Html.Partial("_MainMenu")
不是调用您的 _MainMenu
Controller Action ,只呈现该名称的 View 。如果你想调用一个 Action ,你可以使用这样的子 Action :
@Html.Action("_MainMenu", "HomeController")
关于asp.net-mvc - ASP.net MVC 4 从数据库加载菜单到局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14331766/