Sé que la respuesta ya se ha proporcionado. Pero solo quería dar más detalles sobre esto en una aplicación Blazor (navaja) ...
Deberá inyectar IJSRuntime para realizar JSInterop (ejecutar funciones de JavaScript desde C #)
EN TU PÁGINA DE RAZOR:
@inject IJSRuntime JSRuntime
Una vez que haya inyectado eso, cree un botón con un evento de clic que llame a un método C #:
<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>
(o algo más simple si no usa MatBlazor)
<button @onclick="@(async () => await print())">PRINT</button>
Para el método C #:
public async Task print()
{
await JSRuntime.InvokeVoidAsync("printDocument");
}
AHORA EN TU index.html:
<script>
function printDocument() {
window.print();
}
</script>
Algo a tener en cuenta, la razón por la cual los eventos onclick son asíncronos es porque IJSRuntime espera sus llamadas como InvokeVoidAsync
PD: si desea un cuadro de mensaje en asp net core, por ejemplo:
await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");
Para tener un cuadro de mensaje de confirmación:
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
}
Espero que esto ayude :)