ASP.NET MVC 3 - 将表单发回控制器

Vil*_*ger 2 asp.net-mvc-3

我是ASP.NET MVC的新手.我目前正在使用ASP.NET MVC 3.我正在尝试使用图像按钮创建一个基本表单,将数据发布回控制器.我的表单如下所示:

MyView.cshtml

@using (Html.BeginForm())
{
  @Html.TextBox("queryTextBox", string.Empty, new { style = "width:150px;" })
  <input type="image" alt="Search" src="/img/search.png" value="Search" name="ExecuteQuery" />
}
Run Code Online (Sandbox Code Playgroud)

MyController.cs

public class MyController: Controller
{
  public ActionResult Index()
  {
    ViewData["CurrentDate"] = DateTime.UtcNow;
    return View();
  }

  [HttpPost]
  public ActionResult ExecuteQuery()
  {
    if (ModelState.IsValid)
    {
      return View();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经验证我正在访问我的控制器代码.我能够做到这一点的方法是成功打印出与ViewData相关的"CurrentDate".但是,当我单击我的图像按钮时,我假设我的ExecuteQuery方法中的断点会触发.它不是.我究竟做错了什么?如何在MVC中进行简单的POST?

SLa*_*aks 8

您的表单指向错误的操作.

调用Html.BeginForm()会创建一个<form>POST到当前操作(Index).
您需要将操作名称传递给BeginForm.