在 ASP.NET Core Razor Pages 项目中,我想从数据库中获取员工姓名并将其显示为侧边栏菜单中的菜单项。侧边栏菜单位于 _layout.cshtml 文件中。
我使用实体框架作为部分视图添加 Razor 页面
员工部分视图页面模型代码
public class EmployeesModel : PageModel
{
private readonly OneStopContext _context;
public EmployeesModel(OneStopContext context)
{
_context = context;
}
public IList<Employee> Employee { get;set; }
public async Task OnGetAsync()
{
Employee = await _context.Employees.ToListAsync();
}
}
员工部分视图 - 查看代码
@model OneStopAdmin.Pages.EmployeesModel
@foreach (var item in Model.Employee) {
@item.FirstName
}
然后我只需在 _layout.cshtml 文件中添加此部分视图即可显示侧边栏菜单中的项目。
<partial name="Employees"/>
但我收到以下错误
InvalidOperationException:模型项传入 ViewDataDictionary 的类型为“OneStopAdmin.Pages.IndexModel”,但是 此 ViewDataDictionary 实例需要类型的模型项 'OneStopAdmin.Pages.EmployeesModel'.
我搜索并尝试了一些解决方案,但没有一个有效。 我没有 ASP.NET Core 经验。那么如何使用实体框架获取数据并将它们作为 ASP.NET Core Razor Pages 项目中的部分视图显示在 _layout.cshtml 文件中?
默认情况下,分部会传递与父级相同的模型。
添加
<partial name="_Employees" model="Employees" />
(确保您的部分视图在 Razer 页面中以下划线开头)。另外,您应该使用复数来命名集合,因此请使用“Employees”作为您的列表,而不是“Employee”。
您也可以使用
@Html.Partial()
方法代替,并传递模型。
帕勒姆, 您正试图将错误的模型传递给您的偏颇观点。错误消息指出...
InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“OneStopAdmin.Pages.IndexModel”,但此 ViewDataDictionary 实例需要类型为“OneStopAdmin.Pages.EmployeesModel”的模型项。