将视图中的提交按钮绑定到控制器中的操作结果方法

本文关键字:控制器 操作 结果 方法 按钮 视图 提交 绑定 | 更新日期: 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");
    }
}

现在从我所读到的,添加动作CreateToDocontroller部分到我的表单标签应该映射我的提交按钮点击到"创建"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");
}

如果有帮助请告诉我