此ASP.NET MVC应用程序的布局如下所示(这是一个移动Web应用程序):
在每个表单提交后,我希望下一页的视图显示并相应地提交。但是,当我点击提交按钮时,实际发生的事情是 Page 1 ,显示 Page 2的视图,但现在我正在使用第2页,我点击该页面上的提交,称其为第1页 HttpPost
的操作。
什么会导致 Page 2's 提交以致电第1页 HttpPost
行动?
以下是我正在做的基本想法:
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(MyModel myModel)
{
return View("Page2", myModel);
}
[HttpPost]
public ActionResult Page2(MyModel myModel)
{
return View("Page3", myModel);
}
[HttpPost]
public ActionResult Page3(MyModel myModel)
{
if (ModelState.IsValid)
{
// do something and complete
}
return RedirectToAction("Index", "Home");
}
这显然过于简单,但你应该明白这一点。 Page2
的视图没有问题。但是在点击提交按钮时该页面上,它会立即返回HttpPost
的{{1}}。
有什么想法吗?
答案 0 :(得分:1)
之所以发生这种情况,是因为当您使用mvc的BeginForm
HTML帮助程序时,它会提交给
渲染操作,而不是与视图名称相等的操作,但您可以修复它!
两个选项:
首先:在HTML帮助器中设置控制器和操作的值:
@BeginForm("Page3", "controllerName")
第二次:重定向到操作而不是返回视图:
[HttpPost]
public ActionResult Index(MyModel myModel)
{
return RedirectToAction("Page2", myModel);
}
[HttpPost]
public ActionResult Page2(MyModel myModel)
{
return RedirectToAction("Page3", myModel);
}