我有一个文件index.cshtml,由EF自动生成(代码优先)。以下代码在该文件中正常工作
@model IEnumerable<dyescan.Models.MyMainMenuItem>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.ItemText)
</td>
<td>
@Html.DisplayFor(modelItem => item.LinkAction)
</td>
<td>
@Html.DisplayFor(modelItem => item.LinkController)
</td>
</tr>
}
但是当我复制粘贴_layout.cshtml中的代码时,我无法在那里使用此模型。
Object reference not set to an instance of an object
我在此行@foreach(var item in Model)
中遇到上述错误。以下是我在_Layout.cshtml中的代码
@model IEnumerable<dyescan.Models.MyMainMenuItem>
@foreach(var item in Model)
{
<li>@Html.ActionLink(item.ItemText,item.LinkAction,item.LinkController)</li>
}
更新
所以我试着按照这种方式发表评论。我创建了一个Controller Shared
(文件夹名称),在那个控制器中我做了一个动作_Layout
(视图的文件名)。现在它将dbContex.MyMainMenuItems ..返回给视图
但是仍然无法为_Layout制作一个控制器..为我的菜单项传递一个模型
答案 0 :(得分:0)
在cshtml视图中使用model时,Action方法会返回如下模型: -
public ActionResult Index()
{
var items = themes.Select(o => new SelectListItem {Text = o, Value = o, Selected = o == theme});
return View(items);
}
当Action方法返回模型时,它将绑定到视图。所以在上面的代码项将绑定到index.cshtml。 如果您尝试在_Layout.cshtml中访问此模型,则会出错。