有很多类似的问题,但没有好的答案.这是我的try :
我想使用_Layout.cshtml中的局部视图来显示将出现在每个页面上的菜单.
My_Layout.cshtml:
<div id="navbar" class="navbar-collapse">
<partial name="_TopLevelMenu" model="Model.MainMenuModel" />
</div>
My_TopLevelMenu.cshtml Partial:
@model List<Data.Models.MainMenuModel>
<ul id="ulMainMenu" class="nav navbar-nav">
@foreach (var item in Model){
<li @item.NavId>
<a href="@item.NavigationUrl">@item.DisplayName</a>
</li>
}
</ul>
我的错误:
RuntimeBinderException: 'MyApp.Pages.IndexModel' does not contain a definition for 'MainMenuModel'
我试过的东西:
"Pass the model"-当我这样做时,我得到了同样的错误,此外,Visual Studio强烈建议我改用部分标记帮助器.
使用不带命名型号的partial
标记,这会给出这个错误:InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'MyApp.Pages.IndexModel', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.List
1[MyApp.Data.Models.MainMenuModel]‘.’
我只try 了MainMenuModel
,但Visual Studio告诉我这是一个类型,我不能为我的模型使用类型.
我查看了this website作为指导,它使用了我的一些关键搜索词("Menu"、"Layout"),但没有使用_Layout.cshtml页面作为示例的一部分.
如果我做<partial name="_TopLevelMenu" model=new MainMenuModel()" />
,我不会得到错误,但我也不会从Partial中获取数据来填充.
我必须做什么才能正确地将部分菜单项显示在所有页面上?