1

感谢你目前的帮助。我一直在努力确保其他一切正常,以便我可以专注于这个问题。我仍然相信,一旦我们破解了它,这将是一个简单的修复。我有以下代码,抱歉我改了这么多,在没有备份的情况下把最后一个代码弄得一团糟之后,我不得不重新开始。

        public IActionResult Index()
    {

        if(IndexModel.GlobalTasks == null)
        {
            IndexModel initModel = new IndexModel();
            initModel.AllTasks = InitList();
            initModel.EmptyTask = new ToDoTask();
            IndexModel.GlobalTasks = initModel.AllTasks;
        }
        IndexModel model = new IndexModel();
        model.AllTasks = IndexModel.GlobalTasks;
        model.EmptyTask = new ToDoTask("");
        return View(model);
    }
    //Create Task
    public IActionResult Create(ToDoTask indexModel)
    {
        IndexModel.GlobalTasks.Add(indexModel);
        return RedirectToAction("Index");
    }

和:

@model DE.Models.IndexModel
<h2>To Do List</h2>
<form asp-action="Create">
    <input asp-for="EmptyTask" value="@Model.EmptyTask" />
    <input asp-for="EmptyTask.TaskDetails" placeholder="New Task" />
    <button type="submit">Add Task</button>
</form>

好消息是这会创建一个新的 ToDoTask。所以控制器代码必须非常接近。问题是视图将空详细信息传递给控制器​​,所以我得到一个空任务,这不是我想要的。有任何想法吗?

4

3 回答 3

1

您的控制器操作需要一个ToDoTask对象,而您的视图使用一个TaskViewModel对象。

尝试在它们中使用相同的类型。

于 2016-01-18T16:49:34.757 回答
1

在此处输入图像描述

使用 Tag Helper 表单:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    
<section >
    <input type="text" asp placeholder="Title" asp-for="MyWork.Title"/>
</section >
于 2021-04-29T15:47:29.660 回答
0

我认为,在您的Create()方法中,您需要实例化ToDoTask对象。所以试试这个:

[HttpPost]
public IActionResult Create(ToDoTask newTask)
{
    newTask = new ToDoTask(); 

    return RedirectToAction("Index");
}

您可能还需要返回ToDoTask对象。

于 2016-01-18T14:54:46.543 回答