【问题标题】:How to use Razor Page Using Entity Framework as a partial view in _layout.cshtml file in ASP.NET Core Razor Pages project?如何在 ASP.NET Core Razor Pages 项目的 _layout.cshtml 文件中使用 Razor Page Using Entity Framework 作为部分视图?
【发布时间】: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 项目中的部分视图?

【问题讨论】:

    标签: c# asp.net razor partial-views razor-pages


    【解决方案1】:

    默认情况下,partials 传递给与 parent 相同的模型。

    添加 &lt;partial name="_Employees" model="Employees" /&gt;(确保您的部分视图在 razer 页面中以下划线开头)。此外,您应该使用复数来命名集合,因此在您的列表中使用Employees 而不是Employee。

    您也可以改用@Html.Partial() 方法,并传递模型。

    【讨论】:

    • 感谢您的回复。调试器无法将 model="Employees" 识别为模型!
    • @Parham.D - 您是否将 Employee 集合更改为Employees?
    • 是的,但调试器无法识别它!
    猜你喜欢
    • 2020-10-04
    • 2021-09-21
    • 2020-06-26
    • 2018-07-28
    • 2020-05-09
    • 2018-04-05
    • 2018-10-29
    • 2022-07-14
    • 2020-11-08
    相关资源
    最近更新 更多