Cvičení – vytvoření seznamu úkolů
V tomto cvičení použijete všechno, co jste se zatím naučili, a přidáte do aplikace Blazor základní seznam úkolů.
Vytvoření stránky seznamu úkolů
Vytvořte nový projekt Blazor Web Appu.
Přidání souboru Todo.razor do složky Components/Pages
V nástroji Visual Studio a Visual Studio Code můžete přidat soubor Razor tak, že kliknete pravým tlačítkem myši na složku Komponenty/Stránky v Průzkumník řešení a vyberete příslušnou možnost pro přidání nového souboru.
Soubor Razor můžete také vytvořit pomocí rozhraní příkazového řádku .NET pomocí tohoto příkazu:
dotnet new razorcomponent -n Todo -o Components/Pages
Možnost
-n|--name
v předchozím příkazu určuje název nové komponenty Razor. Nová komponenta se vytvoří ve složce projektuComponents/Pages
pomocí možnosti-o|--output
.Důležité
Názvy souborů komponent Razor by měly mít velké první písmeno, aby bylo možné je snadno odlišit od jiných elementů HTML.
Otevřete komponentu
Todo
a přidejte na začátek souboru direktivu@page
Razor s relativní adresou URL/todo
a nastavte režim vykreslování tak, abyInteractiveServer
komponenta zvládla události uživatelského rozhraní.@page "/todo" @rendermode InteractiveServer <h3>Todo</h3> @code { }
Použijte změny v aplikaci a zkuste přejít na /todo, abyste viděli novou stránku.
Přidejte stránku úkolů do navigační nabídky
Nová stránka seznamu úkolů se zatím nezobrazuje v navigační nabídce s ostatními existujícími stránkami. Navigační nabídka je definována v komponentě NavMenu
, která je součástí rozložení aplikace. Pojďme aktualizovat komponentu NavMenu
a přidat odkaz na stránku seznamu úkolů.
Otevřete komponenty/rozložení/NavMenu.razor.
nav
Najděte prvek v komponentěNavMenu
a přidejte následujícídiv
prvek pod existující navigační položku pro stránku počasí.<div class="nav-item px-3"> <NavLink class="nav-link" href="todo"> <span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Todo </NavLink> </div>
Komponenta
NavLink
je integrovaná komponenta Blazor, která vykresluje značku ukotvení. Pokud aktuální adresa prohlížeče odpovídá hodnotěhref
pro danouNavLink
, vykreslí se také třída CSSactive
, kterou můžete použít pro stylování odkazu.Po použití této změny by se teď měla v navigační nabídce zobrazit stránka Todo.
Vytvoření seznamu položek úkolů
Vytvořte nový
TodoItem.cs
soubor v kořenovém adresáři projektu (na stejné úrovni jakoProgram.cs
) a přidejte do něj následující třídu jazyka C#.public class TodoItem { public string? Title { get; set; } public bool IsDone { get; set; } = false; }
V souboru Todo.razor přidejte pole pro seznam položek úkolů v
@code
bloku.@code { private List<TodoItem> todos = new(); }
Vykreslení neuspořádaného seznamu všech úkolů pomocí
foreach
smyčky<ul> @foreach (var todo in todos) { <li>@todo.Title</li> } </ul>
V seznamu úkolů se zatím nezobrazuje nic, protože seznam je prázdný. Potřebujete způsob, jak přidat některé položky úkolů.
Přidání položek úkolů
Pojďme přidat některé prvky uživatelského rozhraní pro přidání položek úkolů do našeho seznamu.
V Todo.razor přidejte značku
input
abutton
pod neuspořádaný seznam.<input /> <button>Add todo</button>
Vytvořte pole řetězce
newTodo
a propojte ho sinput
pomocí atributu direktivy@bind
.<input @bind="newTodo" /> <button>Add todo</button> @code { private List<TodoItem> todos = new(); string newTodo = ""; }
Přidejte obslužnou rutinu
@onclick
kbutton
, která přidá novýTodoItem
do seznamutodos
na základě hodnotynewTodo
a poté nastaví hodnotunewTodo
na prázdný řetězec.<input @bind="newTodo" /> <button @onclick="AddTodo">Add todo</button> @code { private List<TodoItem> todos = new(); string newTodo = ""; void AddTodo() { if (!string.IsNullOrWhiteSpace(newTodo)) { todos.Add(new TodoItem { Title = newTodo }); newTodo = string.Empty; } } }
Zkontrolujte, že teď můžete přidávat položky úkolů a zobrazují se v seznamu. Hodnota
input
by se také měla resetovat po přidání každé položky úkolu.
Přidejte zaškrtávací políčka a spočítejte neúplné úkoly.
Potřebujete způsob, jak označit položky úkolů jako dokončené, upravit stávající položky úkolů a spočítat, kolik položek úkolů je ještě potřeba udělat.
Aktualizujte obsah elementu
li
tak, aby vykreslovalinput
typucheckbox
, který je vázán natodo.IsDone
, a textinput
, který je vázán natodo.Title
.<ul> @foreach (var todo in todos) { <li> <input type="checkbox" @bind="todo.IsDone" /> <input @bind="todo.Title" /> </li> } </ul>
Aktualizujte záhlaví
<h3>
, aby zobrazovalo počet položek seznamu úkolů, které nejsou dokončené (IsDone
jefalse
).<h3>Todo (@todos.Count(todo => !todo.IsDone))</h3>
Po přidání kódu by měl soubor Todo.razor vypadat přibližně takto:
@page "/todo" @rendermode InteractiveServer <h3>Todo (@todos.Count(todo => !todo.IsDone))</h3> <ul> @foreach (var todo in todos) { <li> <input type="checkbox" @bind="todo.IsDone" /> <input @bind="todo.Title" /> </li> } </ul> <input @bind="newTodo" /> <button @onclick="AddTodo">Add todo</button> @code { private List<TodoItem> todos = new(); string newTodo = ""; void AddTodo() { if (!string.IsNullOrWhiteSpace(newTodo)) { todos.Add(new TodoItem { Title = newTodo }); newTodo = string.Empty; } } }
Po provedení změn v aplikaci zkuste přidávat položky, upravovat položky a označit úkoly jako hotové, aby byla otestována komponenta.
Váš seznam úkolů Blazor je nyní hotový ✅.