将视图中的提交按钮绑定到控制器中的操作结果方法
本文关键字:控制器 操作 结果 方法 按钮 视图 提交 绑定 | 更新日期: 2023-09-27 18:03:40
我对ASP比较陌生。. NET和MVC(我通常在winforms/wpf工作),我试图教自己的基础知识。我试图创建一个简单的待办事项列表样式的东西,你在一个文本框中输入一行文本,单击添加按钮,并填充下面的列表。
这是我的视图(Index.cshtml),它位于Views>ToDo文件夹:
@{
ViewBag.Title = "Index";
}
@model List<Models.ToDoListItem>
<h2>To Do List</h2>
<form asp-action="Create" asp-controller="ToDo" asp-method="post">
<div>
<input name="ToDoItem"/>
<input type="submit" value="Add Task"/>
</div>
</form>
<div>
<ul>
@if (Model != null)
{
foreach (var item in Model)
{
<li>
<label>@item.ItemText</label>
</li>
}
}
</ul>
</div>
这是我的控制器ToDoController.cs
它位于Controllers文件夹
public class ToDoController : Controller
{
// GET: ToDo
public ActionResult Index()
{
return View(Models.ToDoListItem.GetAll());
}
[HttpPost] //This was added as suggested in comments and answers
public ActionResult Create(string toDoItem)
{
Models.ToDoListItem.Create(toDoItem);
return RedirectToAction("Index");
}
}
现在从我所读到的,添加动作Create
到ToDocontroller
部分到我的表单标签应该映射我的提交按钮点击到"创建"ActionResult
方法在我的ToDoController
类。
当我在创建方法上运行带有断点的代码时,单击提交按钮不会击中断点,也不会向列表中添加任何内容。
如果有人知道我哪里错了,我将不胜感激。
谢谢。
首先,您发布的HTML是为您的Index
视图,对应于您的public ActionResult Index()
方法。
其次,为了使提交按钮工作,您需要在控制器中使用HttpPost ActionResult Create
方法。你所发布的是一个HttpGet ActionResult Create
方法。
下面的内容:
/*public ActionResult Create()
{
return View();
}*/
// the code above is only necessary if you decide to create your own separate Create View
[HttpPost]
public ActionResult Create(string toDoItem)
{
Models.ToDoListItem.Create(toDoItem);
return RedirectToAction("Index");
}
如果有帮助请告诉我