У меня есть основной проект asp. net со страницей макета:
_Layout.cshtml
По умолчанию asp. net core _Layout page. Модель не используется.
В папке Areas
у меня есть несколько файлов:
Vendor > Pages > _ViewStart.cshtml
Vendor > Pages > _Menu.cshtml
Vendor > Pages > Index.cshtml
Эти файлы выглядят так:
_ViewStart
@{
Layout = "/Views/Shared/_Layout.cshtml";
}
@{ await Html.RenderPartialAsync("_Menu"); }
_Menu
@page
@model MyProject.Areas.Vendor.Pages.MenuModel
@{
foreach(var i in Model.MenuItems)
{
@Html.ActionLink(i.DisplayText,i.Url)
}
}
Индекс
@page
@model MyProject.Areas.Vendor.Pages.IndexModel
@{
}
<h1>Hello, world!</h1>
Теперь я хочу посетить Vendor
index Razor page, но я хочу, чтобы она сначала отображала параметры _Menu
, следовательно, _ViewStart
с _Layout
и также _Menu
- в основном на каждой странице Vendor, которую я посещаю, должен отображаться _Menu
первым .
Но когда я посещаю Индекс, я получаю эту ошибку:
The model item passed into the ViewDataDictionary is of type 'MyProject.Areas.Vendor.Pages.IndexModel', but this ViewDataDictionary instance requires a model item of type 'MyProject.Areas.Vendor.Pages.MenuModel'
Как это может быть? Я ничего не передаю на страницу Index
? И когда я попытался указать null
в качестве аргумента для RenderPartialAsync()
, я просто получил null reference exception
на своей странице _Menu.
Как мне добиться того, что мне нужно?
Это должно сделать _Layout> _ViewStart> _Menu> AnyOtherVendorPage