Erstellen einer Blazor-App mit einer Aufgabenliste

In diesem Tutorial erfahren Sie, wie Sie eine Blazor-App erstellen und ändern. Sie lernen Folgendes:

  • Erstellen eines Aufgabenlisten-Blazor-App-Projekts
  • Ändern von Razor-Komponenten
  • Verwenden von Ereignisbehandlung und Datenbindung in Komponenten
  • Verwenden von Routing in einer Blazor-App

Am Ende dieses Tutorials verfügen Sie über eine funktionierende Aufgabenlisten-App.

Voraussetzungen

.NET 6.0 SDK

Erstellen einer Blazor-App

Erstellen Sie in einer Befehlsshell eine neue Blazor-App namens TodoList:

dotnet new blazorserver -o TodoList
dotnet new blazorwasm -o TodoList

Mit dem obigen Befehl wird ein Ordner mit dem Namen TodoList mit der -o|--output-Option zum Speichern der App erstellt. Der TodoList-Ordner ist der Stammordner des Projekts. Ändern Sie das Verzeichnis mit dem folgenden Befehl in den Ordner TodoList:

cd TodoList

Erstellen einer Blazor-Aufgabenlisten-App

  1. Fügen Sie der App mithilfe des folgenden Befehls eine neue Todo Razor-Komponente hinzu:

    dotnet new razorcomponent -n Todo -o Pages
    

    Die Option -n|--name im vorherigen Befehl gibt den Namen der neuen Razor-Komponente an. Die neue Komponente wird im Ordner Pages des Projekts mit der -o|--output-Option erstellt.

    Wichtig

    Der erste Buchstabe von Razor-Komponentendateinamen muss großgeschrieben werden. Öffnen Sie den Pages-Ordner. Überprüfen Sie, ob der Todo-Komponentendateiname mit einem großgeschriebenen ersten Buchstaben (T) beginnt. Der Dateiname sollte Todo.razor lauten.

  2. Öffnen Sie die Todo-Komponente in einem beliebigen Datei-Editor, und fügen Sie am Anfang der Datei eine @page Razor-Anweisung mit der relativen URL /todo hinzu.

    Pages/Todo.razor:

    @page "/todo"
    
    <PageTitle>Todo</PageTitle>
    
    <h1>Todo</h1>
    
    @code {
    
    }
    

    Speichern Sie die Datei Pages/Todo.razor.

  3. Fügen Sie der Navigationsleiste die Todo-Komponente hinzu.

    Die Komponente NavMenu wird im Layout der App verwendet. Layouts sind Komponenten, mit denen Sie die Duplizierung des Inhalts in einer App vermeiden können. Die NavLink-Komponente zeigt einen Hinweis auf der Benutzeroberfläche der App an, wenn die Komponenten-URL von der App geladen wird.

    Fügen Sie im Navigationselementinhalt (<nav class="flex-column">) der Komponente NavMenu das folgende Element <div> für die Komponente Todo hinzu.

    In Shared/NavMenu.razor:

    <div class="nav-item px-3">
        <NavLink class="nav-link" href="todo">
            <span class="oi oi-list-rich" aria-hidden="true"></span> Todo
        </NavLink>
    </div>
    

    Speichern Sie die Datei Shared/NavMenu.razor.

  4. Erstellen Sie die App, und führen Sie sie aus, indem Sie den dotnet watch run-Befehl in der Befehlsshell im Ordner TodoList ausführen. Wenn die App ausgeführt wird, navigieren Sie zur neuen To-do-Seite, indem Sie in der Navigationsleiste der App den Link Todo auswählen, der die Seite unter /todo lädt.

    Lassen Sie die App die Befehlsshell weiter ausführen. Bei jedem Speichern einer Datei wird die App automatisch neu erstellt, und die Seite im Browser wird automatisch neu geladen.

  5. Fügen Sie dem Stamm des Projekts (der TodoList-Ordner) eine TodoItem.cs-Datei hinzu, die eine Klasse zum Darstellen eines Aufgabenelements enthalten soll. Verwenden Sie den folgenden C#-Code für die TodoItem-Klasse.

    TodoItem.cs:

    public class TodoItem
    {
        public string? Title { get; set; }
        public bool IsDone { get; set; }
    }
    

    Hinweis

    Wenn Sie Visual Studio verwenden, um die TodoItem.cs-Datei und TodoItem-Klasse zu erstellen, verwenden Sie einen der folgenden Ansätze:

    • Entfernen Sie den Namespace, der von Visual Studio für die Klasse generiert wird.
    • Verwenden Sie die Schaltfläche Kopieren im vorangehenden Codeblock, und ersetzen Sie den gesamten Inhalt der von Visual Studio generierten Datei.
  6. Navigieren Sie zur Todo-Komponente zurück, und führen Sie Folgendes durch:

    • Fügen Sie ein Feld für die To-Do-Elemente im @code-Block hinzu. Die Todo-Komponente verwaltet mit diesem Feld den Status der Aufgabenliste.
    • Fügen Sie ein Markup für eine unsortierte Liste und eine foreach-Schleife hinzu, um jedes Aufgabenelement als Listenelement zu rendern (<li>).

    Pages/Todo.razor:

    @page "/todo"
    
    <PageTitle>Todo</PageTitle>
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    @code {
        private List<TodoItem> todos = new();
    }
    
  7. Die App benötigt Benutzeroberflächenelemente, damit der Liste Aufgabenelemente hinzugefügt werden können. Fügen Sie eine Texteingabe (<input>) und eine Schaltfläche (<button>) unterhalb der Liste (<ul>...</ul>) hinzu:

    @page "/todo"
    
    <PageTitle>Todo</PageTitle>
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    <input placeholder="Something todo" />
    <button>Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
    }
    
  8. Speichern Sie die Datei TodoItem.cs und die aktualisierte Datei Pages/Todo.razor. In der Befehlsshell wird die App automatisch neu erstellt, wenn die Dateien gespeichert werden. Die Seite im Browser wird neu geladen.

  9. Bei Auswahl der Schaltfläche Add todo geschieht nichts, da kein Ereignishandler mit der Schaltfläche verknüpft ist.

  10. Fügen Sie der Todo-Komponente eine AddTodo-Methode hinzu, und registrieren Sie die Methode für die Schaltfläche mithilfe des @onclick-Attributs. Die C#-Methode AddTodo wird aufgerufen, wenn die Schaltfläche ausgewählt wird:

    <input placeholder="Something todo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
    
        private void AddTodo()
        {
            // Todo: Add the todo
        }
    }
    
  11. Fügen Sie am oberen Rand des @code-Blocks ein newTodo-Zeichenfolgenfeld hinzu, um den Titel des neuen To-do-Elements zu erhalten:

    private string? newTodo;
    

    Ändern Sie das<input>-Textelement, um newTodo mit dem @bind-Attribut zu verknüpfen:

    <input placeholder="Something todo" @bind="newTodo" />
    
  12. Aktualisieren Sie die AddTodo-Methode, um das TodoItem mit dem angegebenen Titel der Liste hinzuzufügen. Löschen Sie den Wert der Texteingabe, indem Sie für newTodo eine leere Zeichenfolge festlegen:

    @page "/todo"
    
    <PageTitle>Todo</PageTitle>
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    <input placeholder="Something todo" @bind="newTodo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
        private string? newTodo;
    
        private void AddTodo()
        {
            if (!string.IsNullOrWhiteSpace(newTodo))
            {
                todos.Add(new TodoItem { Title = newTodo });
                newTodo = string.Empty;
            }
        }
    }
    
  13. Speichern Sie die Datei Pages/Todo.razor. Die App wird automatisch in der Befehlsshell neu erstellt, und die Seite wird im Browser neu geladen.

  14. Der Titeltext für die einzelnen Todo-Elemente kann als bearbeitbar festgelegt werden, und ein Kontrollkästchen kann dem Benutzer helfen, die erledigten Elemente nachzuverfolgen. Fügen Sie für jedes Todo-Element eine Kontrollkästcheneingabe hinzu, und binden Sie ihren Wert an die IsDone-Eigenschaft. Ändern Sie @todo.Title in ein <input>-Element, das mit @bind mit todo.Title verknüpft ist:

    <ul>
        @foreach (var todo in todos)
        {
            <li>
                <input type="checkbox" @bind="todo.IsDone" />
                <input @bind="todo.Title" />
            </li>
        }
    </ul>
    
  15. Aktualisieren Sie den <h1>-Header, um die Anzahl der nicht abgeschlossene To-do-Elemente anzuzeigen (IsDone ist false).

    <h1>Todo (@todos.Count(todo => !todo.IsDone))</h1>
    
  16. Die fertige Todo-Komponente (Pages/Todo.razor):

    @page "/todo"
    
    <PageTitle>Todo</PageTitle>
    
    <h1>Todo (@todos.Count(todo => !todo.IsDone))</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>
                <input type="checkbox" @bind="todo.IsDone" />
                <input @bind="todo.Title" />
            </li>
        }
    </ul>
    
    <input placeholder="Something todo" @bind="newTodo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
        private string? newTodo;
    
        private void AddTodo()
        {
            if (!string.IsNullOrWhiteSpace(newTodo))
            {
                todos.Add(new TodoItem { Title = newTodo });
                newTodo = string.Empty;
            }
        }
    }
    
  17. Speichern Sie die Datei Pages/Todo.razor. Die App wird automatisch in der Befehlsshell neu erstellt, und die Seite wird im Browser neu geladen.

  18. Fügen Sie Elemente hinzu, und markieren Sie To-do-Elemente als abgeschlossen, um die Komponente zu testen.

  19. Wenn Sie fertig sind, fahren Sie die App in der Befehlsshell herunter. In vielen Befehlsshells kann der Tastaturbefehl STRG+C verwendet werden, um eine App anzuhalten.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie die folgenden Aufgaben ausgeführt werden:

  • Erstellen eines Aufgabenlisten-Blazor-App-Projekts
  • Ändern von Razor-Komponenten
  • Verwenden von Ereignisbehandlung und Datenbindung in Komponenten
  • Verwenden von Routing in einer Blazor-App

Informationen über Tools für ASP.NET-Core Blazor:

In diesem Tutorial erfahren Sie, wie Sie eine Blazor-App erstellen und ändern. Sie lernen Folgendes:

  • Erstellen eines Aufgabenlisten-Blazor-App-Projekts
  • Ändern von Razor-Komponenten
  • Verwenden von Ereignisbehandlung und Datenbindung in Komponenten
  • Verwenden von Routing in einer Blazor-App

Am Ende dieses Tutorials verfügen Sie über eine funktionierende Aufgabenlisten-App.

Voraussetzungen

.NET 5.0 SDK

Erstellen einer Blazor-App

Erstellen Sie in einer Befehlsshell eine neue Blazor-App namens TodoList:

dotnet new blazorserver -o TodoList
dotnet new blazorwasm -o TodoList

Mit dem obigen Befehl wird ein Ordner mit dem Namen TodoList mit der -o|--output-Option zum Speichern der App erstellt. Der TodoList-Ordner ist der Stammordner des Projekts. Ändern Sie das Verzeichnis mit dem folgenden Befehl in den Ordner TodoList:

cd TodoList

Erstellen einer Blazor-Aufgabenlisten-App

  1. Fügen Sie der App mithilfe des folgenden Befehls eine neue Todo Razor-Komponente hinzu:

    dotnet new razorcomponent -n Todo -o Pages
    

    Die Option -n|--name im vorherigen Befehl gibt den Namen der neuen Razor-Komponente an. Die neue Komponente wird im Ordner Pages des Projekts mit der -o|--output-Option erstellt.

    Wichtig

    Der erste Buchstabe von Razor-Komponentendateinamen muss großgeschrieben werden. Öffnen Sie den Pages-Ordner. Überprüfen Sie, ob der Todo-Komponentendateiname mit einem großgeschriebenen ersten Buchstaben (T) beginnt. Der Dateiname sollte Todo.razor lauten.

  2. Öffnen Sie die Todo-Komponente in einem beliebigen Datei-Editor, und fügen Sie am Anfang der Datei eine @page Razor-Anweisung mit der relativen URL /todo hinzu.

    Pages/Todo.razor:

    @page "/todo"
    
    <h1>Todo</h1>
    
    @code {
    
    }
    

    Speichern Sie die Datei Pages/Todo.razor.

  3. Fügen Sie der Navigationsleiste die Todo-Komponente hinzu.

    Die Komponente NavMenu wird im Layout der App verwendet. Layouts sind Komponenten, mit denen Sie die Duplizierung des Inhalts in einer App vermeiden können. Die NavLink-Komponente zeigt einen Hinweis auf der Benutzeroberfläche der App an, wenn die Komponenten-URL von der App geladen wird.

    Fügen Sie in der ungeordneten Liste (<ul>...</ul>) der NavMenu-Komponente das folgende Listenelement (<li>...</li>) und die folgende NavLink-Komponente für die Todo-Komponente hinzu.

    In Shared/NavMenu.razor:

    <ul class="nav flex-column">
    
        ...
    
        <li class="nav-item px-3">
            <NavLink class="nav-link" href="todo">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Todo
            </NavLink>
        </li>
    </ul>
    

    Speichern Sie die Datei Shared/NavMenu.razor.

  4. Erstellen Sie die App, und führen Sie sie aus, indem Sie den dotnet watch run-Befehl in der Befehlsshell im Ordner TodoList ausführen. Wenn die App ausgeführt wird, navigieren Sie zur neuen To-do-Seite, indem Sie in der Navigationsleiste der App den Link Todo auswählen, der die Seite unter /todo lädt.

    Lassen Sie die App die Befehlsshell weiter ausführen. Bei jedem Speichern einer Datei wird die App automatisch neu erstellt, und die Seite im Browser wird automatisch neu geladen.

  5. Fügen Sie dem Stamm des Projekts (der TodoList-Ordner) eine TodoItem.cs-Datei hinzu, die eine Klasse zum Darstellen eines Aufgabenelements enthalten soll. Verwenden Sie den folgenden C#-Code für die TodoItem-Klasse.

    TodoItem.cs:

    public class TodoItem
    {
        public string Title { get; set; }
        public bool IsDone { get; set; }
    }
    

    Hinweis

    Wenn Sie Visual Studio verwenden, um die TodoItem.cs-Datei und TodoItem-Klasse zu erstellen, verwenden Sie einen der folgenden Ansätze:

    • Entfernen Sie den Namespace, der von Visual Studio für die Klasse generiert wird.
    • Verwenden Sie die Schaltfläche Kopieren im vorangehenden Codeblock, und ersetzen Sie den gesamten Inhalt der von Visual Studio generierten Datei.
  6. Navigieren Sie zur Todo-Komponente zurück, und führen Sie Folgendes durch:

    • Fügen Sie ein Feld für die To-Do-Elemente im @code-Block hinzu. Die Todo-Komponente verwaltet mit diesem Feld den Status der Aufgabenliste.
    • Fügen Sie ein Markup für eine unsortierte Liste und eine foreach-Schleife hinzu, um jedes Aufgabenelement als Listenelement zu rendern (<li>).

    Pages/Todo.razor:

    @page "/todo"
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    @code {
        private List<TodoItem> todos = new();
    }
    
  7. Die App benötigt Benutzeroberflächenelemente, damit der Liste Aufgabenelemente hinzugefügt werden können. Fügen Sie eine Texteingabe (<input>) und eine Schaltfläche (<button>) unterhalb der Liste (<ul>...</ul>) hinzu:

    @page "/todo"
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    <input placeholder="Something todo" />
    <button>Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
    }
    
  8. Speichern Sie die Datei TodoItem.cs und die aktualisierte Datei Pages/Todo.razor. In der Befehlsshell wird die App automatisch neu erstellt, wenn die Dateien gespeichert werden. Die Seite im Browser wird neu geladen.

  9. Bei Auswahl der Schaltfläche Add todo geschieht nichts, da kein Ereignishandler mit der Schaltfläche verknüpft ist.

  10. Fügen Sie der Todo-Komponente eine AddTodo-Methode hinzu, und registrieren Sie die Methode für die Schaltfläche mithilfe des @onclick-Attributs. Die C#-Methode AddTodo wird aufgerufen, wenn die Schaltfläche ausgewählt wird:

    <input placeholder="Something todo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
    
        private void AddTodo()
        {
            // Todo: Add the todo
        }
    }
    
  11. Fügen Sie am oberen Rand des @code-Blocks ein newTodo-Zeichenfolgenfeld hinzu, um den Titel des neuen To-do-Elements zu erhalten:

    private string newTodo;
    

    Ändern Sie das<input>-Textelement, um newTodo mit dem @bind-Attribut zu verknüpfen:

    <input placeholder="Something todo" @bind="newTodo" />
    
  12. Aktualisieren Sie die AddTodo-Methode, um das TodoItem mit dem angegebenen Titel der Liste hinzuzufügen. Löschen Sie den Wert der Texteingabe, indem Sie für newTodo eine leere Zeichenfolge festlegen:

    @page "/todo"
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    <input placeholder="Something todo" @bind="newTodo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
        private string newTodo;
    
        private void AddTodo()
        {
            if (!string.IsNullOrWhiteSpace(newTodo))
            {
                todos.Add(new TodoItem { Title = newTodo });
                newTodo = string.Empty;
            }
        }
    }
    
  13. Speichern Sie die Datei Pages/Todo.razor. Die App wird automatisch in der Befehlsshell neu erstellt, und die Seite wird im Browser neu geladen.

  14. Der Titeltext für die einzelnen Todo-Elemente kann als bearbeitbar festgelegt werden, und ein Kontrollkästchen kann dem Benutzer helfen, die erledigten Elemente nachzuverfolgen. Fügen Sie für jedes Todo-Element eine Kontrollkästcheneingabe hinzu, und binden Sie ihren Wert an die IsDone-Eigenschaft. Ändern Sie @todo.Title in ein <input>-Element, das mit @bind mit todo.Title verknüpft ist:

    <ul>
        @foreach (var todo in todos)
        {
            <li>
                <input type="checkbox" @bind="todo.IsDone" />
                <input @bind="todo.Title" />
            </li>
        }
    </ul>
    
  15. Aktualisieren Sie den <h1>-Header, um die Anzahl der nicht abgeschlossene To-do-Elemente anzuzeigen (IsDone ist false).

    <h1>Todo (@todos.Count(todo => !todo.IsDone))</h1>
    
  16. Die fertige Todo-Komponente (Pages/Todo.razor):

    @page "/todo"
    
    <h1>Todo (@todos.Count(todo => !todo.IsDone))</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>
                <input type="checkbox" @bind="todo.IsDone" />
                <input @bind="todo.Title" />
            </li>
        }
    </ul>
    
    <input placeholder="Something todo" @bind="newTodo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private List<TodoItem> todos = new();
        private string newTodo;
    
        private void AddTodo()
        {
            if (!string.IsNullOrWhiteSpace(newTodo))
            {
                todos.Add(new TodoItem { Title = newTodo });
                newTodo = string.Empty;
            }
        }
    }
    
  17. Speichern Sie die Datei Pages/Todo.razor. Die App wird automatisch in der Befehlsshell neu erstellt, und die Seite wird im Browser neu geladen.

  18. Fügen Sie Elemente hinzu, und markieren Sie To-do-Elemente als abgeschlossen, um die Komponente zu testen.

  19. Wenn Sie fertig sind, fahren Sie die App in der Befehlsshell herunter. In vielen Befehlsshells kann der Tastaturbefehl STRG+C verwendet werden, um eine App anzuhalten.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie die folgenden Aufgaben ausgeführt werden:

  • Erstellen eines Aufgabenlisten-Blazor-App-Projekts
  • Ändern von Razor-Komponenten
  • Verwenden von Ereignisbehandlung und Datenbindung in Komponenten
  • Verwenden von Routing in einer Blazor-App

Informationen über Tools für ASP.NET-Core Blazor:

In diesem Tutorial erfahren Sie, wie Sie eine Blazor-App erstellen und ändern. Sie lernen Folgendes:

  • Erstellen eines Aufgabenlisten-Blazor-App-Projekts
  • Ändern von Razor-Komponenten
  • Verwenden von Ereignisbehandlung und Datenbindung in Komponenten
  • Verwenden von Routing in einer Blazor-App

Am Ende dieses Tutorials verfügen Sie über eine funktionierende Aufgabenlisten-App.

Voraussetzungen

.NET Core 3.1 SDK

Erstellen einer Blazor-App

Erstellen Sie in einer Befehlsshell eine neue Blazor-App namens TodoList:

dotnet new blazorserver -o TodoList
dotnet new blazorwasm -o TodoList

Mit dem obigen Befehl wird ein Ordner mit dem Namen TodoList mit der -o|--output-Option zum Speichern der App erstellt. Der TodoList-Ordner ist der Stammordner des Projekts. Ändern Sie das Verzeichnis mit dem folgenden Befehl in den Ordner TodoList:

cd TodoList

Erstellen einer Blazor-Aufgabenlisten-App

  1. Fügen Sie der App mithilfe des folgenden Befehls eine neue Todo Razor-Komponente hinzu:

    dotnet new razorcomponent -n Todo -o Pages
    

    Die Option -n|--name im vorherigen Befehl gibt den Namen der neuen Razor-Komponente an. Die neue Komponente wird im Ordner Pages des Projekts mit der -o|--output-Option erstellt.

    Wichtig

    Der erste Buchstabe von Razor-Komponentendateinamen muss großgeschrieben werden. Öffnen Sie den Pages-Ordner. Überprüfen Sie, ob der Todo-Komponentendateiname mit einem großgeschriebenen ersten Buchstaben (T) beginnt. Der Dateiname sollte Todo.razor lauten.

  2. Öffnen Sie die Todo-Komponente in einem beliebigen Datei-Editor, und fügen Sie am Anfang der Datei eine @page Razor-Anweisung mit der relativen URL /todo hinzu.

    Pages/Todo.razor:

    @page "/todo"
    
    <h1>Todo</h1>
    
    @code {
    
    }
    

    Speichern Sie die Datei Pages/Todo.razor.

  3. Fügen Sie der Navigationsleiste die Todo-Komponente hinzu.

    Die Komponente NavMenu wird im Layout der App verwendet. Layouts sind Komponenten, mit denen Sie die Duplizierung des Inhalts in einer App vermeiden können. Die NavLink-Komponente zeigt einen Hinweis auf der Benutzeroberfläche der App an, wenn die Komponenten-URL von der App geladen wird.

    Fügen Sie in der ungeordneten Liste (<ul>...</ul>) der NavMenu-Komponente das folgende Listenelement (<li>...</li>) und die folgende NavLink-Komponente für die Todo-Komponente hinzu.

    In Shared/NavMenu.razor:

    <ul class="nav flex-column">
    
        ...
    
        <li class="nav-item px-3">
            <NavLink class="nav-link" href="todo">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Todo
            </NavLink>
        </li>
    </ul>
    

    Speichern Sie die Datei Shared/NavMenu.razor.

  4. Erstellen Sie die App, und führen Sie sie aus, indem Sie den dotnet watch run-Befehl in der Befehlsshell im Ordner TodoList ausführen. Wenn die App ausgeführt wird, navigieren Sie zur neuen To-do-Seite, indem Sie in der Navigationsleiste der App den Link Todo auswählen, der die Seite unter /todo lädt.

    Lassen Sie die App die Befehlsshell weiter ausführen. Bei jedem Speichern einer Datei wird die App automatisch neu erstellt, und die Seite im Browser wird automatisch neu geladen.

  5. Fügen Sie dem Stamm des Projekts (der TodoList-Ordner) eine TodoItem.cs-Datei hinzu, die eine Klasse zum Darstellen eines Aufgabenelements enthalten soll. Verwenden Sie den folgenden C#-Code für die TodoItem-Klasse.

    TodoItem.cs:

    public class TodoItem
    {
        public string Title { get; set; }
        public bool IsDone { get; set; }
    }
    

    Hinweis

    Wenn Sie Visual Studio verwenden, um die TodoItem.cs-Datei und TodoItem-Klasse zu erstellen, verwenden Sie einen der folgenden Ansätze:

    • Entfernen Sie den Namespace, der von Visual Studio für die Klasse generiert wird.
    • Verwenden Sie die Schaltfläche Kopieren im vorangehenden Codeblock, und ersetzen Sie den gesamten Inhalt der von Visual Studio generierten Datei.
  6. Navigieren Sie zur Todo-Komponente zurück, und führen Sie Folgendes durch:

    • Fügen Sie ein Feld für die To-Do-Elemente im @code-Block hinzu. Die Todo-Komponente verwaltet mit diesem Feld den Status der Aufgabenliste.
    • Fügen Sie ein Markup für eine unsortierte Liste und eine foreach-Schleife hinzu, um jedes Aufgabenelement als Listenelement zu rendern (<li>).

    Pages/Todo.razor:

    @page "/todo"
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    @code {
        private IList<TodoItem> todos = new List<TodoItem>();
    }
    
  7. Die App benötigt Benutzeroberflächenelemente, damit der Liste Aufgabenelemente hinzugefügt werden können. Fügen Sie eine Texteingabe (<input>) und eine Schaltfläche (<button>) unterhalb der Liste (<ul>...</ul>) hinzu:

    @page "/todo"
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    <input placeholder="Something todo" />
    <button>Add todo</button>
    
    @code {
        private IList<TodoItem> todos = new List<TodoItem>();
    }
    
  8. Speichern Sie die Datei TodoItem.cs und die aktualisierte Datei Pages/Todo.razor. In der Befehlsshell wird die App automatisch neu erstellt, wenn die Dateien gespeichert werden. Die Seite im Browser wird neu geladen.

  9. Bei Auswahl der Schaltfläche Add todo geschieht nichts, da kein Ereignishandler mit der Schaltfläche verknüpft ist.

  10. Fügen Sie der Todo-Komponente eine AddTodo-Methode hinzu, und registrieren Sie die Methode für die Schaltfläche mithilfe des @onclick-Attributs. Die C#-Methode AddTodo wird aufgerufen, wenn die Schaltfläche ausgewählt wird:

    <input placeholder="Something todo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private IList<TodoItem> todos = new List<TodoItem>();
    
        private void AddTodo()
        {
            // Todo: Add the todo
        }
    }
    
  11. Fügen Sie am oberen Rand des @code-Blocks ein newTodo-Zeichenfolgenfeld hinzu, um den Titel des neuen To-do-Elements zu erhalten:

    private string newTodo;
    

    Ändern Sie das<input>-Textelement, um newTodo mit dem @bind-Attribut zu verknüpfen:

    <input placeholder="Something todo" @bind="newTodo" />
    
  12. Aktualisieren Sie die AddTodo-Methode, um das TodoItem mit dem angegebenen Titel der Liste hinzuzufügen. Löschen Sie den Wert der Texteingabe, indem Sie für newTodo eine leere Zeichenfolge festlegen:

    @page "/todo"
    
    <h1>Todo</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>@todo.Title</li>
        }
    </ul>
    
    <input placeholder="Something todo" @bind="newTodo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private IList<TodoItem> todos = new List<TodoItem>();
        private string newTodo;
    
        private void AddTodo()
        {
            if (!string.IsNullOrWhiteSpace(newTodo))
            {
                todos.Add(new TodoItem { Title = newTodo });
                newTodo = string.Empty;
            }
        }
    }
    
  13. Speichern Sie die Datei Pages/Todo.razor. Die App wird automatisch in der Befehlsshell neu erstellt, und die Seite wird im Browser neu geladen.

  14. Der Titeltext für die einzelnen Todo-Elemente kann als bearbeitbar festgelegt werden, und ein Kontrollkästchen kann dem Benutzer helfen, die erledigten Elemente nachzuverfolgen. Fügen Sie für jedes Todo-Element eine Kontrollkästcheneingabe hinzu, und binden Sie ihren Wert an die IsDone-Eigenschaft. Ändern Sie @todo.Title in ein <input>-Element, das mit @bind mit todo.Title verknüpft ist:

    <ul>
        @foreach (var todo in todos)
        {
            <li>
                <input type="checkbox" @bind="todo.IsDone" />
                <input @bind="todo.Title" />
            </li>
        }
    </ul>
    
  15. Aktualisieren Sie den <h1>-Header, um die Anzahl der nicht abgeschlossene To-do-Elemente anzuzeigen (IsDone ist false).

    <h1>Todo (@todos.Count(todo => !todo.IsDone))</h1>
    
  16. Die fertige Todo-Komponente (Pages/Todo.razor):

    @page "/todo"
    
    <h1>Todo (@todos.Count(todo => !todo.IsDone))</h1>
    
    <ul>
        @foreach (var todo in todos)
        {
            <li>
                <input type="checkbox" @bind="todo.IsDone" />
                <input @bind="todo.Title" />
            </li>
        }
    </ul>
    
    <input placeholder="Something todo" @bind="newTodo" />
    <button @onclick="AddTodo">Add todo</button>
    
    @code {
        private IList<TodoItem> todos = new List<TodoItem>();
        private string newTodo;
    
        private void AddTodo()
        {
            if (!string.IsNullOrWhiteSpace(newTodo))
            {
                todos.Add(new TodoItem { Title = newTodo });
                newTodo = string.Empty;
            }
        }
    }
    
  17. Speichern Sie die Datei Pages/Todo.razor. Die App wird automatisch in der Befehlsshell neu erstellt, und die Seite wird im Browser neu geladen.

  18. Fügen Sie Elemente hinzu, und markieren Sie To-do-Elemente als abgeschlossen, um die Komponente zu testen.

  19. Wenn Sie fertig sind, fahren Sie die App in der Befehlsshell herunter. In vielen Befehlsshells kann der Tastaturbefehl STRG+C verwendet werden, um eine App anzuhalten.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie die folgenden Aufgaben ausgeführt werden:

  • Erstellen eines Aufgabenlisten-Blazor-App-Projekts
  • Ändern von Razor-Komponenten
  • Verwenden von Ereignisbehandlung und Datenbindung in Komponenten
  • Verwenden von Routing in einer Blazor-App

Informationen über Tools für ASP.NET-Core Blazor: