.NET 8.0 - InvalidOperationException:无法为类型“BerHUB_reverse.Components.Pages.CreateBookingPage”上的属性“bookingData”提供值

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

今天我收到以下错误代码:

InvalidOperationException: Cannot provide a value for property 'bookingData' on type 'BerHUB_reverse.Components.Pages.CreateBookingPage'. There is no registered service of type 'BerHUB_reverse.DataAccessLayer.Repositories.IBookingData`1[BerHUB_reverse.Components.Pages.Booking]'. 

在 CreateBookingPage.razor 文件中是接口的 DI,但它无法识别它。 在 CreateBookingPage.razor 的第 16 行中:

@inject IBookingData<Booking> bookingData

我还为模型、数据类和接口编写了using语句:

@using BerHUB_reverse.DataAccessLayer.Repositories
@using BerHUB_reverse.DataAccessLayer.Data
@using BerHUB_reverse.Models 

IBookingData.cs:

using System.Collections.Generic;
using System.Threading.Tasks;

namespace BerHUB_reverse.DataAccessLayer.Repositories
{
    public interface IBookingData<T> where T : class
    {
        Task<int> InsertBooking(T model);
    }
}

BookingData.cs:

using BerHUB_reverse.DataAccessLayer.Repositories;
using BerHUB_reverse.DataAccessLayer.SqlDataAccess;
using BerHUB_reverse.Models;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace BerHUB_reverse.DataAccessLayer.Data
{
    public class BookingData : IBookingData<Booking>
    {
        private readonly ISqlDataAccess _db;

        public BookingData(ISqlDataAccess db)
        {
            _db = db;
        }

        public async Task<int> InsertBooking(Booking model)
        {
            var parameters = new {model.Hostname, model.TimeslotID};
            int insertedId = await _db.SaveDataReturnId("sp_InsertBooking", parameters);
            return insertedId;
        }
    }    
}

我还将它添加到了Program.cs中:

builder.Services.AddScoped<IBookingData<Booking>, BookingData>();

我不知道错误来自哪里,也许你可以帮助我。

c# .net blazor-server-side .net-8.0
1个回答
0
投票

这个问题的答案是,您不允许在 Blazor 中使用“Booking”名称作为模型、类或类似名称。我将“Booking”类更改为 BookingModel,现在它对我来说工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.