如何在 ASP.NET Core Razor Pages 项目的 _layout.cshtml 文件中使用 Razor Page Using Entity Framework 作为部分视图?
Posted
技术标签:
【中文标题】如何在 ASP.NET Core Razor Pages 项目的 _layout.cshtml 文件中使用 Razor Page Using Entity Framework 作为部分视图?【英文标题】:How to use Razor Page Using Entity Framework as a partial view in _layout.cshtml file in ASP.NET Core Razor Pages project? 【发布时间】:2021-07-14 23:22:15 【问题描述】:在 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 方面没有经验。那么如何使用 Entity 框架获取数据并将它们显示在 _layout.cshtml 文件中作为 ASP.NET Core Razor Pages 项目中的部分视图?
【问题讨论】:
【参考方案1】:默认情况下,partials 传递给与 parent 相同的模型。
添加 <partial name="_Employees" model="Employees" />
(确保您的部分视图在 razer 页面中以下划线开头)。此外,您应该使用复数来命名集合,因此在您的列表中使用Employees 而不是Employee。
您也可以改用@Html.Partial()
方法,并传递模型。
【讨论】:
感谢您的回复。调试器无法将 model="Employees" 识别为模型! @Parham.D - 您是否将 Employee 集合更改为Employees? 是的,但调试器无法识别它!以上是关于如何在 ASP.NET Core Razor Pages 项目的 _layout.cshtml 文件中使用 Razor Page Using Entity Framework 作为部分视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core 的自定义 TagHelper 中呈现 Razor 模板?
如何在 asp.net core razor 页面中拒绝匿名用户?