Haq*_*cci 5 asp.net-mvc asp.net-mvc-partialview razor
我是一个mvc新手.
我想要做的是从数据库加载菜单并在局部视图中显示它.将从_layout视图调用此局部视图.
家庭控制器
在家庭控制器我添加一个名为"_MainMenu"的动作
public class HomeController : Controller
{
mrpDatabase _db = new mrpDatabase();
public ActionResult _MainMenu()
{
return PartialView("_MainMenu", _db.menu.ToList());
}
....
}
Run Code Online (Sandbox Code Playgroud)
PartialView
这是我的_MainMenu PartialView
@model IEnumerable<appMRP.Models.menu>
<ul id="menu">
@foreach (var item in Model)
{
<li>@item.menu1</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
布局页面
这个部分菜单显示在我的_Layout.cshtml中
<nav>
@Html.Partial("_MainMenu")
</nav>
Run Code Online (Sandbox Code Playgroud)
当我跑这个.我收到错误" NullReferenceException未被用户代码处理.对象引用未设置为对象的实例 "
似乎我的_MainMenu中的"模型"为空
我做错了什么 ?
谢谢
如果您的局部视图使用模型,则需要将其传递为:
@Html.Partial("_MainMenu", Model.ListOfMenus)
Run Code Online (Sandbox Code Playgroud)
或者那种效果.目前,您没有为_MainMenu视图指定模型,因此null使用了.当你尝试a时@foreach,它会抛出你看到的异常.
请注意,这@Html.Partial("_MainMenu")不会调用您的_MainMenu控制器操作,只是呈现该名称的视图.
如果要调用操作,可以使用如下的子操作:
@Html.Action("_MainMenu", "HomeController")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21994 次 |
| 最近记录: |