部分视图菜单 - 发送信息以查看

时间:2017-12-04 22:06:50

标签: c# asp.net-mvc asp.net-core

这是我如何尝试获得包含课程的视图。我得到它的方式是写:

@Html.Partial("View/ViewBar_Info/Menu")

See how my view/controlle looks out

如果我正在做一个普通的MVC视图,我可以这样做。但那是因为我必须得到通过数据库控制的菜单。因此,我试着在这里做到这一点。

如何调用该视图?

Error here

错误文字:

  

在编译处理此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改源代码。

     

生成的代码缺少一个或多个编译引用。确保   您的项目正在引用' Microsoft.NET.Sdk.Web'和   ' PreserveCompilationContext' property未设置为false。

更新EIDT:

我是从_Layout.cshtml

制作的
@Html.Partial("View/ViewBar_Info/Menu.cshtml")

在Menu.cshtml中:

@page
@model NewWebsite_SITE_2018.Pages.View.ViewBar_Info.MenuModel

@foreach (var item in Model.GetListMenu)
{
    <a>@item.Name</a>
}

现在出错了:

  

InvalidOperationException:传递给ViewDataDictionary的模型项的类型为&#39; NewWebsite_SITE_2018.Pages.IndexModel&#39;,但此ViewDataDictionary实例需要类型为&#39; NewWebsite_SITE_2018.Pages.View.ViewBar_Info的模型项。 MenuModel&#39;

我尝试做的是在我的布局中,所以我打电话给我的菜单,所以来单页。

1 个答案:

答案 0 :(得分:0)

第一个问题出现在2.0.3中修复的Razor预编译问题中 https://github.com/dotnet/core-setup/issues/2981

第二

当你打电话给你的部分时,你应该发送正确的模型,如果你不发送剃须刀尝试发送当前的模型视图

发送现有模型

@Html.Partial("View/ViewBar_Info/Menu.cshtml", yourMenuModel)

或创建新

@Html.Partial("View/ViewBar_Info/Menu.cshtml", new NewWebsite_SITE_2018.Pages.View.ViewBar_Info.MenuModel())

或修改非必需模型的视图

@{
var menuModel = new NewWebsite_SITE_2018.Pages.View.ViewBar_Info.MenuModel();
}

@foreach (var item in menuModel.GetListMenu)
{
    <a>@item.Name</a>
}