Как обратные вызовы и обработчики событий работают в BlazorC#

Место общения программистов C#
Ответить
Anonymous
 Как обратные вызовы и обработчики событий работают в Blazor

Сообщение Anonymous »

Я новичок в Blazor и прохожу курс на сайте Microsoft по Blazor Server. У меня есть дочерний компонент ConfigurationPizzaDialog.razor, который определяет модальное диалоговое окно и несколько обратных вызовов событий, которые нужно вызывать и обрабатывать в компоненте Home.razor.
Кнопка закрытия модального диалогового окна не реагирует на щелчки. Есть какие-нибудь предложения по поводу того, что происходит?
Вот мой код для дочернего компонента:

Код: Выделить всё

@using Demo.Models;
@inject HttpClient HttpClient




@Pizza!.Special!.Name
@Pizza.Special.Description



Size:

@(Pizza.Size)" (£@(Pizza.GetFormattedTotalPrice()))



Cancel
Price: @(Pizza.GetFormattedTotalPrice())
Order >




@code {

[Parameter] public Pizza? Pizza { get; set; }
[Parameter] public EventCallback OnCancel { get; set; }
[Parameter] public EventCallback OnConfirm { get; set; }
}
А это родительский компонент:

Код: Выделить всё

@using System.Threading.Tasks
@using Demo.Models
@using Demo.Shared

@rendermode InteractiveServer
@inject HttpClient HttpClient
@inject NavigationManager NavigationManager

@page "/"

Pizza Shop

Blazing Pizzas




@if (specials != null)
{
@foreach (var special in specials)
{


[img]@special.ImageUrl[/img]
                             alt="@special.Name"
style="width: 65%; height: auto;" @onclick="@(() => ShowConfigurePizzaDialog(special))"
/>

@special.Name
@special.Description
[b]Price: [/b] @special.GetFormattedBasePrice()



}
}



@if (ShowingConfigureDialog)
{

}


@code {

List
 specials = new();
Pizza? ConfiguringPizza;
Order? Order = new Order();
bool ShowingConfigureDialog;

protected override async Task OnInitializedAsync()
{
specials = await HttpClient.GetFromJsonAsync(NavigationManager.BaseUri + "specials") ?? new List();
}

public void ShowConfigurePizzaDialog(PizzaSpecial special)
{
ConfiguringPizza = new Pizza()
{
Special = special,
SpecialId = special.Id,
Size = Pizza.DefaultSize,
Toppings = new List(),
};

ShowingConfigureDialog = true;
}

public void CancelConfigurePizzaDialog()
{
ConfiguringPizza = null;
ShowingConfigureDialog = false;
}

public void ConfirmConfigurePizzaDialog()
{
if (ConfiguringPizza != null && Order != null)
Order.Pizzas.Add(ConfiguringPizza);

ConfiguringPizza = null;
ShowingConfigureDialog = false;
}
}
В исходном руководстве обработчики событий были определены в службе и использовались в компоненте Home посредством внедрения зависимостей, но я переместил их в домашний компонент в целях обучения.
Признателен за ваш вклад
Спасибо – Хара

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-blazor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»