绑定提交按钮以查看Controller中的动作结果方法

时间:2016-08-23 13:12:56

标签: c# asp.net asp.net-mvc

我对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> 

这是我的Controller 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方法{1}}上课。

当我在create方法上使用断点运行我的代码时,单击提交按钮不会触发断点,也不会将任何内容添加到列表中。

如果有人知道我哪里出错了,一​​些帮助将非常感激。

感谢。

1 个答案:

答案 0 :(得分:1)

首先,您发布的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");
}

如果有帮助,请告诉我。