В Blazor флажок не останется установленнымC#

Место общения программистов C#
Ответить
Anonymous
 В Blazor флажок не останется установленным

Сообщение Anonymous »

У меня есть простое приложение списка задач в Blazor, где, когда я проверяю элемент задачи, список задач записывается в файл json. Работает до последнего флажка. Последний флажок не будет записываться в файл json и не останется отмеченным.
Я пытался записать в текстовый файл, а также вызывать асинхронные методы и StateHasChanged, но, похоже, ничего не получилось. работа.

Код: Выделить всё

@page "/todo"
@rendermode InteractiveServer
@inject API.IApi todoApi

Todo

Todo (@todos.Count(todo => !todo.IsDone))


Add Todo

[list]
@foreach (var todo in todos)
{
[*]



}
[/list]

@code {
public List todos = new();
public string? newTodo = "";

public async Task ValidFormSubmitted()
{
Console.WriteLine("Clicked");

if(!string.IsNullOrWhiteSpace(newTodo))
{
todos.Add(new TodoItem { Title = newTodo });
await Task.Run(() => todoApi.Write(todos));
newTodo = string.Empty;
}
}

protected override async Task OnInitializedAsync()
{
todos = await Task.FromResult(todoApi.Read());
Console.WriteLine("Initialized");
}

public async Task CheckboxChanged(EventArgs e)
{
await Task.Run(() => todoApi.Write(todos));
await InvokeAsync(StateHasChanged);
}

}
Вот код для записи в файл json:

Код: Выделить всё

using System.Text.Json;

namespace Todolist.API
{
public class JsonApi: IApi
{

public void Write(List todos)
{
string json = JsonSerializer.Serialize(todos);
File.WriteAllText("todos.json", json);
}

public List Read()
{
string filename = "todos.json";
string json = "";
List todos = new List();

if (File.Exists(filename) && File.ReadLines(filename).Any())
{
json = File.ReadAllText(filename);
todos = JsonSerializer.Deserialize(json);
return todos;
}
else
{
File.Create(filename).Close();
return todos;
}
}
}
}
Скриншот последнего флажка не установлен

Подробнее здесь: https://stackoverflow.com/questions/792 ... ay-checked
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»