У меня есть уровень службы с таким интерфейсом:
Код: Выделить всё
public interface IDataServices
{
Task GetJobConfigurationsAsync();
}
Код: Выделить всё
public class JobConfigDataServices : IDataServices
{
// this is my Repository layer, will be injected via DI
private readonly IDataRepository _jobConfigRepository;
private readonly ILogger _logger;
public JobConfigDataServices(IDataRepository jobConfigRepository, ILogger logger)
{
_jobConfigRepository = jobConfigRepository;
_logger = logger;
}
public async Task GetJobConfigurationsAsync()
{
var getAllQuery = @"select Id, JobName, AppName, ParamName, ParamValue, ParamOrder, CreatedDate, UpdatedDate from DBSchema.JobConfigurations";
var getAllJobConfigs = await _jobConfigRepository.GetResultCollectionAsync(getAllQuery);
return getAllJobConfigs;
}
}
GetResultCollectionAsync() предоставит сбор данных типа JobConfigurations.
Вот как выглядит моя страница Blazor:
Код: Выделить всё
@page "/jobconfigs"
@using JobsStatus.Contracts
@using JobsStatus.Services
@inject IDataServices jobService
Job Configurations
This is the Job Configurations page.
@if (isLoading)
{
Loading...
}
else if (!string.IsNullOrEmpty(errorMessage))
{
@errorMessage
}
else
{
@foreach (var job in DbJobs)
{
[b]@job.JobName[/b] - @job.AppName
}
}
@code {
private IEnumerable DbJobs { get; set; } = Array.Empty();
private bool isLoading = true;
private string? errorMessage;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender || !isLoading)
{
return;
}
try
{
DbJobs = await jobService.GetJobConfigurationsAsync();
}
catch (Exception ex)
{
errorMessage = $"Failed to load job configurations: {ex.Message}";
}
finally
{
isLoading = false;
await InvokeAsync(StateHasChanged);
}
}
}
Код: Выделить всё
var builder = WebApplication.CreateBuilder(args);
// Add Infrastructure services
builder.Services.Configure(builder.Configuration.Bind);
// Add the injections for the data services
builder.Services.AddScoped(typeof(IDataRepository), typeof(MmdDataRepository));
builder.Services.AddScoped();
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
app.UseHttpsRedirection();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents()
.AddInteractiveServerRenderMode();
app.Run();
Если я удалю строку @inject IDataServices jobService со своей страницы Razor, все события будут запущены и все точки останова достигнуты.
Если это может помочь, мой App.razor выглядит так:
Код: Выделить всё
Что мне не хватает и что не так в моем коде?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ven-firing
Мобильная версия