Slide 1

Slide 1 text

Blazor WebAssembly: Forms in Action Patrick Jahr @jahr_patrick Architekt

Slide 2

Slide 2 text

Hello, it’s me. Patrick Jahr Architekt @ Thinktecture AG E-Mail: [email protected] Twitter: @jahr_patrick Slides: https://thinktecture.com/patrick-jahr Blazor WebAssembly Forms in Action Patrick Jahr P

Slide 3

Slide 3 text

Motivation Blazor Forms Data Binding Validation Performance Resumé Blazor WebAssembly Forms in Action

Slide 4

Slide 4 text

Blazor WebAssembly Forms in Action

Slide 5

Slide 5 text

- Meist genutzt Werkzeug um mit Nutzern zu interagieren - Verarbeitung von Daten ist eine der häufigsten Vorkommnisse in Anwendungen - Viel Spielraum bei der Eingabe haben - Fehler klar angeben und anzeigen - Komplexe Logik durch Abhängigkeiten zwischen den Feldern Blazor WebAssembly Forms in Action Motivation 1

Slide 6

Slide 6 text

Motivation Blazor Forms Data Binding Validation Performance Resumé Blazor WebAssembly Forms in Action

Slide 7

Slide 7 text

Kernelement: - Rendert das alt bekannte HTLM-Tag - EditContext wird erstellt Blazor WebAssembly Forms in Action Blazor Forms

Slide 8

Slide 8 text

Blazor WebAssembly bietet von Haus aus eigene Input Felder - - - - … Hinweis: Übliche HTML-Tags wie können natürlich auch genutzt werden. Blazor WebAssembly Forms in Action Forms

Slide 9

Slide 9 text

Motivation Blazor Forms Data Binding Validation Performance Resumé Blazor WebAssembly Forms in Action

Slide 10

Slide 10 text

Blazor WebAssembly Forms in Action Data Binding EditForm: Model ...

Slide 11

Slide 11 text

Blazor WebAssembly Forms in Action Data Binding EditForm: EditContext public partial class Test { private EditContext _editContext; protected override void OnInitialized() { Country = new Country(); _editContext = new EditContext(Country); base.OnInitialized(); } }

Slide 12

Slide 12 text

Blazor WebAssembly Forms in Action Data Binding @bind-Value - Property, die an das Feld gebunden werden soll - Two-Way-Binding

Slide 13

Slide 13 text

Blazor WebAssembly Forms in Action Data Binding Value - One-Way Binding - ValueChanged: Reagieren auf Änderungen des Wertes - ValueExpression: Value Identifier CurrentValue = id)">

Slide 14

Slide 14 text

DEMO Blazor WebAssembly Forms in Action

Slide 15

Slide 15 text

Motivation Blazor Forms Data Binding Validation Performance Resumé Blazor WebAssembly Forms in Action P

Slide 16

Slide 16 text

DataAnnotations DataAnnotations Attribute zur Validierung der einzelnen Properties [Required] [StringLength(100, ErrorMessage = "Nummer zu lang")] [RegularExpression( @"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Not a valid phone number")] public string PhoneNumber { get; set; } Blazor WebAssembly Forms in Action Validation

Slide 17

Slide 17 text

FluentValidation - OpenSource NuGet Package - Blazored.FluentValidation - Erstellen von eigenen Custom Validators - Eigene Regeln erstellen zum Validieren von Feldern - Möglichkeit Abhängigkeiten von Properties zu validieren - Dependency Injection Blazor WebAssembly Forms in Action Validation

Slide 18

Slide 18 text

FluentValidation - Validator - Ableiten von Basisklasse: AbstractValidator - Zu Root hinzufügen - @using Blazored.FluentValidation - Tag: Blazor WebAssembly Forms in Action Validation

Slide 19

Slide 19 text

DEMO Blazor WebAssembly Forms in Action

Slide 20

Slide 20 text

Motivation Blazor Forms Data Binding Validation Performance Resumé Blazor WebAssembly Forms in Action

Slide 21

Slide 21 text

Blazor WebAssembly Forms in Action Erstes Rendern? || ShouldRender() DOM Event oninput, onclick, onblur,... Event Handler ausführen Render Component OnAfterRender/ OnAfterRenderAsync Render tree wird erstellt und an den DOM gesendet DOM Update Rendern wird beendet Nein Ja 1 2 3 4a 4b 5 6

Slide 22

Slide 22 text

Auf was muss geachtet werden? - Nach jedem Event wie z.B. @onclick wird ein Re-Rendering getriggert - Wird wirklich bei jeder Änderung ein Re-Rendering benötigt? - Disable ShouldRender wenn möglich - foreach vs. Virtualize - Müssen alle Elemente direkt geladen werden? Blazor WebAssembly Forms in Action Performance

Slide 23

Slide 23 text

DEMO Blazor WebAssembly Forms in Action

Slide 24

Slide 24 text

Motivation Blazor Forms Data Binding Validation Performance Resumé Blazor WebAssembly Forms in Action

Slide 25

Slide 25 text

- Blazor bietet viel von Haus aus - DataAnnotationValidation: viel in der klassischen Validierungsszenarien - FluentValidation: Validierung von Sonderfällen und komplexen Abhänigkeiten - Aufpassen beim Rendern! Muss wirklich bei jedem Event neu gerendert werden? Blazor WebAssembly Forms in Action Resumé

Slide 26

Slide 26 text

Vielen Dank für Ihre Aufmerksamkeit! Patrick Jahr @jahr_patrick [email protected]