Cevabın verilmiş olduğunu biliyorum. Ama bunu bir Blazor uygulamasında (jilet) yapmakla ilgili ayrıntılı bir açıklama yapmak istedim ...
JSInterop (C # 'dan javascript işlevlerini çalıştırmak) için IJSRuntime enjekte etmeniz gerekecektir.
RAZOR SAYFANIZDA:
@inject IJSRuntime JSRuntime
Bunu enjekte ettikten sonra, bir C # yöntemini çağıran bir tıklama etkinliğine sahip bir düğme oluşturun:
<MatFAB Icon="@MatIconNames.Print" OnClick="@(async () => await print())"></MatFAB>
(veya MatBlazor kullanmıyorsanız daha basit bir şey)
<button @onclick="@(async () => await print())">PRINT</button>
C # yöntemi için:
public async Task print()
{
await JSRuntime.InvokeVoidAsync("printDocument");
}
ŞİMDİ index.html:
<script>
function printDocument() {
window.print();
}
</script>
Dikkat edilmesi gereken bir şey, onclick olaylarının eşzamansız olmasının nedeni, IJSRuntime'ın InvokeVoidAsync gibi çağrılarını beklemesidir.
Not: Örneğin asp net core'da mesaj kutusu göndermek istiyorsanız:
await JSRuntime.InvokeAsync<string>("alert", "Hello user, this is the message box");
Onay mesaj kutusuna sahip olmak için:
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
}
Bu yardımcı olur umarım :)