Ćwiczenie — tworzenie formularza adresu przy użyciu składników platformy Blazor
W tej chwili aplikacja Blazing Pizza używa elementów HTML dla przycisków i przechwytywania danych. Platforma Blazor zwiększa obsługę formularzy, umożliwiając im używanie składników, które mogą być powiązane z modelem języka C#.
Zespół chciałby zastąpić bieżące elementy HTML składnikami platformy Blazor. Zespół chce, aby przesyłał zamówienia tylko wtedy, gdy adres i nazwa nie są puste.
W tym ćwiczeniu zastąpisz bieżące pola HTML składnikiem blazor i zmienisz sposób przesyłania zamówień przez klientów. Następnie zobaczysz, jak użyć kontrolki EditContext do zapisywania ręcznych walidacji formularza.
Dodawanie składnika Blazor EditForm
W programie Visual Studio Code w Eksploratorze plików rozwiń Pages, a następnie wybierz Checkout.razor.
W bloku
<div class="main">dodaj nowyEditFormskładnik.<div class="main"> <EditForm Model=Order.DeliveryAddress OnSubmit=CheckSubmission>W obszarze
</button>elementu zamknij składnik EditForm.</button> </EditForm> </div>@onclickUsuń zdarzenie w obiekcie</button>.<button class="checkout-button btn btn-warning" disabled=@isSubmitting>@codeW bloku dodaj kod do obsługi przesyłania formularza powyżej istniejącejPlaceOrdermetody.private async Task CheckSubmission() { isSubmitting = true; await PlaceOrder(); isSubmitting = false; }isSubmitting = true;Usuń wiersz kodu zPlaceOrder()metody .
Zastępowanie elementów HTML składnikami platformy Blazor
W Eksploratorze plików, rozwiń Udostępnione, a następnie wybierz AddressEditor.razor.
Wybierz menu Edytuj , a następnie wybierz pozycję Zamień.
W polu Znajdź wprowadź ciąg
<input, w polu Zamień wprowadź ciąg<InputText, a następnie wybierz pozycję Zamień wszystko.
Wybierz menu Edytuj , a następnie wybierz pozycję Zamień.
W polu Znajdź w polu
@bind=Zamień wprowadź ciąg@bind-Value=, a następnie wybierz pozycję Zamień wszystko.@ref="startName"Usuń kod w polu Nazwa.Usuń cały kod poniżej deklaracji Parametr w
@codebloku. Blok powinien teraz wyglądać następująco.@code { [Parameter] public Address Address { get; set; } }FocusAsyncprogram jest obecnie obsługiwany tylko w przypadku elementów HTML.
Sprawdzanie pustych pól przed przesłaniem formularza
Dodajmy komunikat o błędzie, który aplikacja może wyświetlić klientowi, jeśli nie wprowadzi nazwy ani adresu.
W Eksploratorze Plików rozwiń folder Pages, a następnie wybierz plik Checkout.razor.
Dodaj komunikat o błędzie w elemecie
h4>Deliver to...</h4>.<div class="checkout-delivery-address"> <h4>Deliver to...</h4> @if (isError) { <div class="alert alert-danger">Please enter a name and address.</div> } <AddressEditor Address="Order.DeliveryAddress" /> </div>@codeW bloku dodaj deklarację dla wartości logicznejisError.bool isError = false;Popraw metodę
CheckSubmission(), aby złożyć zamówienie tylko wtedy, gdy pola nazwy i kodu pocztowego zawierają w nich dane.private async Task CheckSubmission(EditContext editContext) { isSubmitting = true; var model = editContext.Model as Address; isError = string.IsNullOrWhiteSpace(model?.Name) || string.IsNullOrWhiteSpace(model?.Line1) || string.IsNullOrWhiteSpace(model?.PostalCode); if (!isError) { await PlaceOrder(); } isSubmitting = false; }W programie Visual Studio Code naciśnij F5 lub wybierz pozycję Uruchom rozpocznij>debugowanie.
Spróbuj zamówić pizze bez wprowadzania żadnych informacji. Powinien zostać wyświetlony komunikat o błędzie.
Naciśnij Shift + F5 , aby zatrzymać działanie aplikacji.