Я пробираюсь через различные учебные пособия по списку задач, в то время как изучаю реакцию и структуру сущностей. В качестве некоторого фона я пробился, хотя Учебное пособие Microsoft todo list ; хотя я заменил переднюю часть этого с моим собственным передним концом. Все работало нормально, пока я не попытался расширить его и затронуть проблему, которую я опишу ниже.
Я обновил модель EF, добавив в нее частные поля набора для дополнительных преимуществ (становится доступным только для чтения после инициализации и т. Д.). Это показано в коде ниже.
public class TodoItem
{
public long id { get; private set; }
public string title { get; private set; }
public bool IsComplete { get; private set; }
// Define constructor
public TodoItem(long newId, string newTitle)
{
id = newId;
title = newTitle;
IsComplete = false;
}
public void ToggleComplete()
{
IsComplete = !IsComplete;
}
}
Последующее действие от контроллера показано ниже. Я включил некоторые распечатки отладки, поскольку они показывают, где поле уже показывает заголовок как ноль.
Я считаю, что это раздел кода, с которым я борюсь, и хотел бы знать, какие ошибки я делаю или каковы лучшие практики!
[HttpPost]
public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem item)
{
// returns null if model field set to private
System.Diagnostics.Debug.WriteLine("item title: " + item.title);
// Create new item passing in arguments for constructor
TodoItem newItem = new TodoItem(item.id, item.title);
_context.TodoItems.Add(newItem);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetTodoItem), new { id = newItem.id }, newItem);
}
Метод внешнего интерфейса (js), в котором выполняется запрос на публикацию, показан ниже:
const addTodoMethod = (title) => {
// Create new item
const item = {
title: title,
id: Date.now(),
isComplete: false,
}
// Update state
const newTodos = [...todos, item];
setTodos(newTodos);
// Can use POST requiest to add to db
axios.post('https://localhost:44371/api/todo/',
item)
.then(res=> {
console.log("Added item. Title: ", title);
})
.catch(function (error) {
console.log(error);
})}
Надеюсь, я достаточно хорошо объяснил проблему. Дайте мне знать, если что-нибудь еще понадобится!