Visual Studio 脚手架创建表单在 ASP.NET Core 8 MVC 中不起作用

问题描述 投票:0回答:1

我对 .NET Core 相当陌生,我正在开发一个小型项目,一个公寓预订网站。

我已经为该网站制作了数据模型和数据表。当我使用 Razor 视图构建新控制器时,当表中存在外键时,创建表单将无法工作。

简单表格的基本创建工作是有效的。我尝试了一切,我给了 ChatGPT 我所有的代码,但它仍然不起作用。我做错了什么?

有2个数据表

Apartments
Bookings
。以下是表单中所需的 2 个数据类(它们从
ID
继承了
BaseEntity
):

using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace Vendeghazak.Data
{
    public class Booking : BaseEntity
    {
        public int GuestID { get; set; }
        public DateTime CheckInDate { get; set; }
        public DateTime CheckOutDate { get; set; }
        public string? Comment { get; set; }
        public string? Status { get; set; }
        public bool Cancelled { get; set; }
        
        [ForeignKey("ApartmentId")]
        public int ApartmentId { get; set; }
        public Apartment Apartment { get; set; }
        
        public int NumberOfPersons { get; set; }
        public int PersonsUnder18 { get; set; }
        public string BillingAddress { get; set; }
        public string BillingEmail { get; set;}
    }

    public class Apartment : BaseEntity
    {
        public string Name { get; set; }
        public int Capacity { get; set; }
    }

    public partial class BaseEntity
    {
        public int Id { get; set; }
        public DateTime DateCreated { get; set; }
        public DateTime DateModified { get; set; }
    }
}

我尝试从外键注释中删除

Id
,但没有帮助。当我提交表单时,
Apartments
子项始终为空,因此
ModelState
无效。有一个公寓的下拉列表,我尝试了不同的方法来正确填充它,但没有成功。

我还尝试将公寓的ID值硬编码到视图中,然后在控制器中手动分配它,但是提交后

Apartments
子键始终为空。

我做错了什么?

asp.net-core-mvc foreign-keys visual-studio-2022 modelstate asp.net-mvc-scaffolding
1个回答
0
投票

默认情况下,当您检索 Bookings 时,LINQ 不会加载 Apartments 表。

将以下内容添加到加载 Booking 的 LINQ 语句中。

.Include(x => x.Apartment)
© www.soinside.com 2019 - 2024. All rights reserved.