Tag Helper 形式:asp-未按预期工作
Tag Helper forms: asp-for not working as expected
感谢您到目前为止的帮助。我一直在努力确保其他一切正常,这样我就可以专注于这个问题。我仍然相信,一旦我们破解了它,它就会很容易修复。我有下面的代码,抱歉我改了这么多,我把最后一个搞得一团糟,没有备份,我不得不重新开始。
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。所以控制器代码必须非常接近现场。问题是视图将空详细信息传递给控制器,所以我得到一个空任务,这不是我想要的。
有什么想法吗?
我认为,在您的 Create()
方法中,您需要实例化 ToDoTask
对象。所以试试这个:
[HttpPost]
public IActionResult Create(ToDoTask newTask)
{
newTask = new ToDoTask();
return RedirectToAction("Index");
}
您可能还需要 return ToDoTask
对象。
您的控制器操作需要 ToDoTask
对象,而您的视图使用 TaskViewModel
对象。
尝试在两者中使用相同的类型。
使用标签助手表单:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<section >
<input type="text" asp placeholder="Title" asp-for="MyWork.Title"/>
</section >
感谢您到目前为止的帮助。我一直在努力确保其他一切正常,这样我就可以专注于这个问题。我仍然相信,一旦我们破解了它,它就会很容易修复。我有下面的代码,抱歉我改了这么多,我把最后一个搞得一团糟,没有备份,我不得不重新开始。
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。所以控制器代码必须非常接近现场。问题是视图将空详细信息传递给控制器,所以我得到一个空任务,这不是我想要的。 有什么想法吗?
我认为,在您的 Create()
方法中,您需要实例化 ToDoTask
对象。所以试试这个:
[HttpPost]
public IActionResult Create(ToDoTask newTask)
{
newTask = new ToDoTask();
return RedirectToAction("Index");
}
您可能还需要 return ToDoTask
对象。
您的控制器操作需要 ToDoTask
对象,而您的视图使用 TaskViewModel
对象。
尝试在两者中使用相同的类型。
使用标签助手表单:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<section >
<input type="text" asp placeholder="Title" asp-for="MyWork.Title"/>
</section >