Blazor Razor String onclick als Parameter

Wer in einer @onclick Funktion einen Methode aufrufen will verwendet den Namen der Funktion im Sinne eines Delegates als Zeichenkette.

@onclick="DoUglyThings"

Wird ein Parameter der Methode übergeben um zb einen Listeneintrag auszuwählen, muss eine Lambda Expression zwischen geschalten werden. Folgender Ausdruck ohne direkten Parameter des Events

@onclick="()=>DoUglyThings(1)"

Liefert das Ereignis einen Parameter mit wie MouseMove oder Keydown, dann kann dieser mit Namen oder gerne auch mit _ erhalten und ggf weiter gereicht werden. Folgender Code wieder der aufgerufenen Methode wenn per Delegate ohne Parameter programmiert wird

void DoUglyThings(KeyboardEventArgs args)

Möchte man den Parameter schon beim Aufruf bekommen und ggf weiter verarbeiten dann folgendes Beispiel mit einem 2t Parameter

@onkeydown="(_)=>DoUglyThings(_,1)"

Spannend wird es, wenn ein String als Argument der Lambda Methode zu übergeben ist. Dann sind plötzlich zwei Double Quotes geschachtelt nötig. Das mag der Kompiler aber so nicht

   @onclick="()=>DoUglyThings("1")">

Die Lösung für einen String Parameter als Argument in einem OnClick Event sind einfache Hochkommas außen rum und den Code per Klammer einschließen

@onclick='(()=>DoUglyThings("1"))'>

Kommentare sind geschlossen