Создание приложения списка дел с помощью Blazor: методы и примеры кода

Blazor — это веб-платформа, разработанная Microsoft, которая позволяет разработчикам создавать интерактивные веб-приложения с использованием C# и.NET. Приложение списка дел — это распространенный пример, используемый для демонстрации возможностей Blazor. Вот несколько методов, которые вы можете использовать для реализации списка задач Blazor, а также примеры кода:

  1. Использование списка:

    // TodoItem.cs
    public class TodoItem
    {
    public string Title { get; set; }
    public bool IsCompleted { get; set; }
    }
    // TodoList.razor
    @page "/todolist"
    <h3>Todo List</h3>
    <ul>
    @foreach (var item in todoItems)
    {
        <li>
            <input type="checkbox" @bind="item.IsCompleted" />
            <span>@item.Title</span>
        </li>
    }
    </ul>
    @code {
    List<TodoItem> todoItems = new List<TodoItem>
    {
        new TodoItem { Title = "Task 1", IsCompleted = false },
        new TodoItem { Title = "Task 2", IsCompleted = true },
        new TodoItem { Title = "Task 3", IsCompleted = false }
    };
    }
  2. Использование компонента:

    // TodoItem.cs
    public class TodoItem
    {
    public string Title { get; set; }
    public bool IsCompleted { get; set; }
    }
    // TodoList.razor
    @page "/todolist"
    <h3>Todo List</h3>
    <ul>
    @foreach (var item in todoItems)
    {
        <TodoItemComponent Item="item" />
    }
    </ul>
    @code {
    List<TodoItem> todoItems = new List<TodoItem>
    {
        new TodoItem { Title = "Task 1", IsCompleted = false },
        new TodoItem { Title = "Task 2", IsCompleted = true },
        new TodoItem { Title = "Task 3", IsCompleted = false }
    };
    }
    // TodoItemComponent.razor
    <div>
    <input type="checkbox" @bind="Item.IsCompleted" />
    <span>@Item.Title</span>
    </div>
    @code {
    [Parameter]
    public TodoItem Item { get; set; }
    }
  3. Использование службы передачи данных:

    // TodoItem.cs
    public class TodoItem
    {
    public string Title { get; set; }
    public bool IsCompleted { get; set; }
    }
    // TodoList.razor
    @page "/todolist"
    <h3>Todo List</h3>
    <ul>
    @foreach (var item in todoItems)
    {
        <li>
            <input type="checkbox" @bind="item.IsCompleted" />
            <span>@item.Title</span>
        </li>
    }
    </ul>
    @code {
    List<TodoItem> todoItems;
    protected override async Task OnInitializedAsync()
    {
        todoItems = await TodoItemService.GetTodoItemsAsync();
    }
    }
    // TodoItemService.cs
    public static class TodoItemService
    {
    public static async Task<List<TodoItem>> GetTodoItemsAsync()
    {
        // Fetch todo items from an API or database
        // Example:
        // var todoItems = await HttpClient.GetFromJsonAsync<List<TodoItem>>("api/todoitems");
        // return todoItems;
        // For demonstration purposes, return hardcoded todo items:
        return new List<TodoItem>
        {
            new TodoItem { Title = "Task 1", IsCompleted = false },
            new TodoItem { Title = "Task 2", IsCompleted = true },
            new TodoItem { Title = "Task 3", IsCompleted = false }
        };
    }
    }