Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 在一个ASP.NET Core Razor页面中创建两个模型的列表_Asp.net Core_Entity Framework Core_Razor Pages - Fatal编程技术网

Asp.net core 在一个ASP.NET Core Razor页面中创建两个模型的列表

Asp.net core 在一个ASP.NET Core Razor页面中创建两个模型的列表,asp.net-core,entity-framework-core,razor-pages,Asp.net Core,Entity Framework Core,Razor Pages,我正在尝试为我正在开发的餐厅应用程序创建一个页面,其中列出了所有餐厅菜单(食品/饮料/零食等),然后列出了每个菜单下的所有类别(汉堡、比萨饼、较大的、啤酒等)。此页面位于管理区域而非客户区域,允许员工管理菜单和菜单类别 我已经创建了一个razor页面,它列出了所有菜单,并使用for each循环显示在页面上-我的问题是,如何创建链接到每个菜单的所有菜单类别的列表 例如: 菜单1 菜单项1菜单项2菜单项3 菜单2 菜单项1菜单项2菜单项3 这些是我的模型: 菜单.cs namespace Orde

我正在尝试为我正在开发的餐厅应用程序创建一个页面,其中列出了所有餐厅菜单(食品/饮料/零食等),然后列出了每个菜单下的所有类别(汉堡、比萨饼、较大的、啤酒等)。此页面位于管理区域而非客户区域,允许员工管理菜单和菜单类别

我已经创建了一个razor页面,它列出了所有菜单,并使用for each循环显示在页面上-我的问题是,如何创建链接到每个菜单的所有菜单类别的列表

例如:

菜单1

菜单项1
菜单项2
菜单项3

菜单2

菜单项1
菜单项2
菜单项3

这些是我的模型:

菜单.cs

namespace OrderingApp.Models
{
    public class Menu
    {

        public int Id { get; set; }

        public string Name { get; set; }

    }
}
namespace OrderingApp.Models
{
    public class MenuCategory
    {
        [Key]
        [Required]
        public int Id { get; set; }

        [Required]
        public string Name { get; set; }

        // EF configure foreign keys
        public int MenuId { get; set; }

        [DisplayName("Menu")]
        public Menu Menu { get; set; }

    }
}
namespace OrderingApp.Pages.Admin.ManageMenus
{
    public class IndexModel : PageModel
    {
        private readonly OrderingApp.Data.ApplicationDbContext _context;

        public IndexModel(OrderingApp.Data.ApplicationDbContext context)
        {
            _context = context;
        }

        public IList<Menu> Menu { get; set; }

        public async Task OnGetAsync()
        {
            Menu = await _context.Menus.ToListAsync();
        }
    }
}
MenuCategory.cs

namespace OrderingApp.Models
{
    public class Menu
    {

        public int Id { get; set; }

        public string Name { get; set; }

    }
}
namespace OrderingApp.Models
{
    public class MenuCategory
    {
        [Key]
        [Required]
        public int Id { get; set; }

        [Required]
        public string Name { get; set; }

        // EF configure foreign keys
        public int MenuId { get; set; }

        [DisplayName("Menu")]
        public Menu Menu { get; set; }

    }
}
namespace OrderingApp.Pages.Admin.ManageMenus
{
    public class IndexModel : PageModel
    {
        private readonly OrderingApp.Data.ApplicationDbContext _context;

        public IndexModel(OrderingApp.Data.ApplicationDbContext context)
        {
            _context = context;
        }

        public IList<Menu> Menu { get; set; }

        public async Task OnGetAsync()
        {
            Menu = await _context.Menus.ToListAsync();
        }
    }
}
这是我的页面模型和页面:

Index.cshtml.cs

namespace OrderingApp.Models
{
    public class Menu
    {

        public int Id { get; set; }

        public string Name { get; set; }

    }
}
namespace OrderingApp.Models
{
    public class MenuCategory
    {
        [Key]
        [Required]
        public int Id { get; set; }

        [Required]
        public string Name { get; set; }

        // EF configure foreign keys
        public int MenuId { get; set; }

        [DisplayName("Menu")]
        public Menu Menu { get; set; }

    }
}
namespace OrderingApp.Pages.Admin.ManageMenus
{
    public class IndexModel : PageModel
    {
        private readonly OrderingApp.Data.ApplicationDbContext _context;

        public IndexModel(OrderingApp.Data.ApplicationDbContext context)
        {
            _context = context;
        }

        public IList<Menu> Menu { get; set; }

        public async Task OnGetAsync()
        {
            Menu = await _context.Menus.ToListAsync();
        }
    }
}
namespace OrderingApp.Pages.Admin.managemenu
{
公共类索引模型:PageModel
{
私有只读医嘱app.Data.ApplicationDbContext\u上下文;
公共索引模型(OrderingApp.Data.ApplicationDbContext上下文)
{
_上下文=上下文;
}
公共IList菜单{get;set;}
公共异步任务OnGetAsync()
{
Menu=wait_context.Menus.toListSync();
}
}
}
Index.cshtml

@page
@model OrderingApp.Pages.Admin.ManageMenus.IndexModel


@{
    ViewData["Title"] = "Menus";
    Layout = "~/Pages/Shared/_AdminLayout.cshtml";
}

<h1>@ViewData["Title"]</h1>

<hr />

<p>
    <a class="btn btn-primary" asp-page="Create">Create New</a>
</p>

<div class="card-deck">

    @foreach (var Menu in Model.Menu)
    {
            <div class="card" style="width: 18rem;">
                <img class="card-img-top" data-src="holder.js/100px160" alt="Card image cap">
                <div class="card-body">
                    <h2 class="card-text"> @Html.DisplayFor(modelItem => Menu.Name)</h2>
                    <ul class="list-group list-group-flush">
               
                        **Another for each loop here for menu categories?
                        <li class="list-group-item">** Each item would go here ** </li>**
                  
                    </ul>
                    <div class="card-body">
                        <a class="btn btn-success" asp-page="./Edit" asp-route-id="@Menu.Id">Edit</a>
                        <a class="btn btn-danger" asp-page="./Delete" asp-route-id="@Menu.Id">Delete</a>
                    </div>
                </div>
            </div>
       
    }
</div>
@page
@模型排序app.Pages.Admin.ManageMenus.IndexModel
@{
ViewData[“标题”]=“菜单”;
Layout=“~/Pages/Shared/_AdminLayout.cshtml”;
}
@ViewData[“标题”]

创造新的

@foreach(Model.Menu中的var菜单) { @DisplayFor(modelItem=>Menu.Name)
    **菜单类别的每个循环都有一个循环?
  • **每个项目都会放在这里**
  • **
编辑 删除 }
您应该向表示菜单类别集合的菜单添加导航属性:

namespace OrderingApp.Models
{
    public class Menu
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<MenuCategory> MenuCategories { get; set; }
    }
}
然后您可以在其上循环:

<h2 class="card-text"> @Html.DisplayFor(modelItem => Menu.Name)</h2>
<ul class="list-group list-group-flush">
@foreach(var category in Menu.MenuCategories)           
{
    <li class="list-group-item">@categpry.Name</li>**
}              
</ul>
@Html.DisplayFor(modelItem=>Menu.Name)
    @foreach(菜单.菜单类别中的变量类别) {
  • @categpry.Name
  • ** }

这正是我想要的,谢谢你的详细回答!