Cvičení – vytvoření formuláře adresy s komponentami Blazor

Dokončeno

V tuto chvíli aplikace Blazing Pizza používá elementy HTML k zachycení dat a tlačítek. Architektura Blazor má vylepšenou podporu formulářů, které jim umožňují používat komponenty, které lze svázat s modelem jazyka C#.

Tým by chtěl nahradit aktuální prvky HTML komponentami Blazor. Tým by vám chtěl odeslat objednávky jenom v případě, že adresa a jméno nejsou prázdné.

V tomto cvičení nahradíte aktuální pole HTML komponentou Blazor a změníte způsob odeslání objednávek zákazníkem. Uvidíte, jak použít EditContext k zápisu ručních ověření formuláře.

Přidání komponenty Blazor EditForm

  1. V editoru Visual Studio Code v Průzkumníku souborů rozbalte stránky a pak vyberte Checkout.razor.

  2. <div class="main"> Pod blok přidejte novou EditForm komponentu.

    <div class="main">
        <EditForm Model=Order.DeliveryAddress OnSubmit=CheckSubmission>
    
  3. Pod elementem </button> zavřete komponentu EditForm.

            </button>
        </EditForm>
    </div>
    
  4. @onclick Odeberte událost na kartě </button>.

    <button class="checkout-button btn btn-warning" disabled=@isSubmitting>
    
  5. @code Do bloku přidejte kód pro zpracování odeslání formuláře nad existující PlaceOrder metodu.

    private async Task CheckSubmission()
    {
        isSubmitting = true;
        await PlaceOrder();
        isSubmitting = false;
    }
    
  6. isSubmitting = true; Odstraňte řádek kódu z PlaceOrder() metody.

Nahrazení elementů HTML komponentami Blazor

  1. V Průzkumníku souborů rozbalte položku Sdílené a pak vyberte AddressEditor.razor.

  2. Vyberte nabídku Upravit a pak vyberte Nahradit.

  3. Do prvního pole zadejte <input do pole nahradit a <InputTextvyberte nahradit vše.

    Snímek obrazovky editoru Visual Studio Code a dialogového okna nahrazení textu

  4. Vyberte nabídku Upravit a pak vyberte Nahradit.

  5. Do prvního pole zadejte @bind= do pole nahradit a @bind-Value=vyberte nahradit vše.

  6. @ref="startName" Odeberte kód v poli Název.

  7. Odeberte veškerý kód pod deklarací parametru @code v bloku. Blok by teď měl vypadat takto.

    @code {
        [Parameter] public Address Address { get; set; }
    }
    

    FocusAsync je v současné době podporován pouze u elementů HTML.

Kontrola prázdných polí před odesláním formuláře

Pojďme přidat chybovou zprávu, kterou může aplikace zobrazit zákazníkovi, pokud nezadá svoje jméno nebo adresu.

  1. V Průzkumníku souborů rozbalte stránky a pak vyberte Checkout.razor.

  2. Přidejte pod prvek chybovou h4>Deliver to...</h4> zprávu.

    <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>
    
  3. @code Do bloku přidejte deklaraci logické hodnotyisError.

    bool isError = false;
    
  4. Vylepšete metodu CheckSubmission() tak, aby se objednávka umístila pouze v případě, že pole psč obsahují data.

    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;
    }
    
  5. V editoru Visual Studio Code stiskněte klávesu F5 nebo vyberte Spustit spuštění>ladění.

    Zkuste si objednat pizzu, aniž byste museli zadávat žádné informace. Měla by se zobrazit chybová zpráva.

    Snímek obrazovky s chybovou zprávou.

  6. Stisknutím kláves Shift + F5 zastavte spuštění aplikace.