Ich weiß, dass die Antwort bereits gegeben wurde. Aber ich wollte dies nur in einer Blazor-App (Rasiermesser) erläutern ...
Sie müssen IJSRuntime injizieren, um JSInterop auszuführen (Ausführen von Javascript-Funktionen von C # aus).
IN IHRER RAZOR SEITE:
@inject IJSRuntime JSRuntime
Sobald Sie dies injiziert haben, erstellen Sie eine Schaltfläche mit einem Klickereignis, das eine C # -Methode aufruft:
<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>
(oder etwas einfacheres, wenn Sie MatBlazor nicht verwenden)
<button @onclick="@(async () => await print())">PRINT</button>
Für die C # -Methode:
public async Task print()
{
await JSRuntime.InvokeVoidAsync("printDocument");
}
JETZT IN IHRER index.html:
<script>
function printDocument() {
window.print();
}
</script>
Zu beachten ist, dass die Onclick-Ereignisse asynchron sind, weil IJSRuntime auf Aufrufe wie InvokeVoidAsync wartet
PS: Wenn Sie zum Beispiel eine Meldungsbox in asp net core haben möchten:
await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");
So erhalten Sie eine Bestätigungsmeldung:
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
}
Hoffe das hilft :)