ASP.NET MVC 3 - 两个表单,两个ActionResult但一个Controller?

时间:2012-02-03 06:18:09

标签: asp.net-mvc

我有一个新的asp.net mvc 3项目,其结构如下:

查看: /Home/Index.cshtml

@{
    Html.BeginForm("Index", "Home", "POST");
}
<input id="name" type="text" />
<input id="submit_1" type="submit" value="submit" />
@{
    Html.EndForm();
}

@{
    Html.BeginForm("FindTeacher", "Home", "POST");
}
<input id="name" type="text" />
<input id="submit_2" type="submit" value="submit" />
@{
    Html.EndForm();
}

控制器: /Controllers/HomeController.cs

public class HomeController : Controller
{

    [HttpPost]
    public ActionResult Index(string name)
    {
        //call the model FindStudent() and set the ViewData
        return View();
    }

    [HttpPost]
    public ActionResult FindTeacher(string name)
    {
        //Call the FindTeacher () and set the ViewData
        return View();
    }
}

submit_1是有效的,因为它找到了Index的ActionResult,但是,当我点击submit_2时,它说找不到FindTeacher Controller。

那我该怎么办?

2 个答案:

答案 0 :(得分:1)

"POST"错了;它应该是FormMethods.Post

因此,您的表单实际上是在提交GET请求。

Index有效,因为您有一个不同的操作可以响应对/Index的GET请求。
FindTeacher失败,因为该操作没有GET。

答案 1 :(得分:1)

试试这个

[HttpPost] 
public ActionResult FindTeacher(string name) 
{ 
  // do updates 
  return RedirectToAction("Index"); or 
  return Index(); 
}