加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.net MVC 4从数据库加载菜单到Partial View

发布时间:2020-12-16 03:39:38 所属栏目:asp.Net 来源:网络整理
导读:我是一个mvc新手. 我想要做的是从数据库加载菜单并在局部视图中显示它.将从_layout视图调用此局部视图. 家庭控制器 在家庭控制器我添加一个名为“_MainMenu”的动作 public class HomeController : Controller{ mrpDatabase _db = new mrpDatabase(); public
我是一个mvc新手.

我想要做的是从数据库加载菜单并在局部视图中显示它.将从_layout视图调用此局部视图.

家庭控制器

在家庭控制器我添加一个名为“_MainMenu”的动作

public class HomeController : Controller
{
        mrpDatabase _db = new mrpDatabase();

        public ActionResult _MainMenu()
        {
          return PartialView("_MainMenu",_db.menu.ToList());
        }
        ....
}

PartialView

这是我的_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中的“模型”为空

我做错了什么 ?

谢谢

解决方法

如果您的局部视图使用模型,则需要将其传递为:

@Html.Partial("_MainMenu",Model.ListOfMenus)

或者那种效果.目前,您没有为_MainMenu视图指定模型,因此使用null.当你尝试@foreach时,它会抛出你看到的异常.

请注意,@ Html.Partial(“_ MainMenu”)不会调用您的_MainMenu控制器操作,只是呈现该名称的视图.

如果要调用操作,可以使用如下的子操作:

@Html.Action("_MainMenu","HomeController")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读