Je sais que la réponse a déjà été fournie. Mais je voulais juste préciser comment faire cela dans une application Blazor (rasoir) ...
Vous devrez injecter IJSRuntime, afin d'exécuter JSInterop (exécuter des fonctions javascript à partir de C #)
DANS VOTRE PAGE RAZOR:
@inject IJSRuntime JSRuntime
Une fois que vous avez injecté cela, créez un bouton avec un événement de clic qui appelle une méthode C #:
<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>
(ou quelque chose de plus simple si vous n'utilisez pas MatBlazor)
<button @onclick="@(async () => await print())">PRINT</button>
Pour la méthode C #:
public async Task print()
{
await JSRuntime.InvokeVoidAsync("printDocument");
}
MAINTENANT DANS VOTRE index.html:
<script>
function printDocument() {
window.print();
}
</script>
Quelque chose à noter, la raison pour laquelle les événements onclick sont asynchrones est parce que IJSRuntime attend ses appels tels que InvokeVoidAsync
PS: si vous vouliez envoyer un message dans asp net core par exemple:
await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");
Pour avoir une boîte de message de confirmation:
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
}
J'espère que cela t'aides :)