TL;DR:
Я понял, что путаю типы приложений Blazor, и забыл добавить `@rendermode InteractiveServer`.
У меня есть клиентское приложение WebAssembly Blazor, и у меня возникла проблема с тем, что метод onclick не запускается после нажатия кнопки. Эта Blazor WebAssembly была добавлена к существующему веб-API ASP.NET Core. Это .NET 8.
У меня есть динамически созданная таблица, содержащая некоторые данные, полученные из службы.
Код, выполняющий это ниже:
Код: Выделить всё
private void FetchMails() {
APIResponse result = MailArchiveService.GetMailMessages();
if(!result.Success) {
StatusMessage = result.GetStatusString();
} else {
Data = result.GetContent[*]>();
}
}
Он работает, предоставленные данные действительны и отображаются правильно. Моя генерация таблицы выглядит так:
Код: Выделить всё
@if (Data == null){
Loading...
} else {
Sender
Recipient
Subject
TemplateType
Sent
Actions
@foreach(var record in Data) {
@record.Sender.Email
@record.Recipient.Email
@record.Subject
@record.TemplateType.ToString()
@record.SentTime?.ToString("dd-MM-yyyy HH:mm:ss")
View
}
}
Код: Выделить всё
public void ViewMailContent(int id) {
Console.WriteLine($"ViewMailContent called with ID: {id}");
//Display message content to user
}
Я добавил эту WriteLine и поместил туда точку останова, а она даже не входит в этот метод.
Для По причинам тестирования я добавил еще одну кнопку за пределами этой таблицы с константным идентификатором, и тогда она работает правильно. У меня не возникает никаких ошибок, приложение, кажется, ничего не делает, но не зависает (я все еще могу переключать вкладки и делать другие вещи).
Я пробовал решения, опубликованные здесь. .
Но это не работает.
Я пробовал менять кнопку такими способами:
- Изменил onclick на что-то вроде этого:
Код: Выделить всё
View - Изменение типа возврата на EventCallback:
Он срабатывал, когда страница загружалась без нажатия пользователем.Код: Выделить всё
View - Добавление mouseEventArgs (предлагается здесь):
Код: Выделить всё
ViewНичего не изменилосьКод: Выделить всё
View - Добавление такого события (предложение GPT):
Ничего не изменилосьКод: Выделить всё
View - Временно заменен обработчик на console.log:
Я вижу сообщение в инструментах разработки браузера.Код: Выделить всё
View
Подробнее здесь: https://stackoverflow.com/questions/776 ... -triggered
Мобильная версия