Я знаю, что ответ уже был предоставлен. Но я просто хотел уточнить, как это сделать в приложении Blazor (бритва) ...
Вам нужно будет ввести IJSRuntime, чтобы выполнить JSInterop (запуск функций javascript из C #)
НА СТРАНИЦЕ БРИТВЫ:
@inject IJSRuntime JSRuntime
Как только вы сделаете это, создайте кнопку с событием click, которое вызывает метод C #:
<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>
(или что-то более простое, если вы не используете MatBlazor)
<button @onclick="@(async () => await print())">PRINT</button>
Для метода C #:
public async Task print()
{
await JSRuntime.InvokeVoidAsync("printDocument");
}
ТЕПЕРЬ В ВАШЕМ index.html:
<script>
function printDocument() {
window.print();
}
</script>
Обратите внимание: причина, по которой события onclick являются асинхронными, заключается в том, что IJSRuntime ожидает таких вызовов, как InvokeVoidAsync.
PS: Если вы хотите сообщение в ядре asp net, например:
await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");
Чтобы иметь окно подтверждения сообщения:
bool question = await JSRuntime.InvokeAsync<bool>("confirm", "Are you sure you want to do this?");
if(question == true)
{
//user clicked yes
}
else
{
//user clicked no
}
Надеюсь это поможет :)