我有一个方法...
[HttpPost]
public ActionResult Start(SomeViewModel someViewModel) { ... }
根据某些条件返回诸如 return View("Invalid")、View("NotFound")、View("Run", anotherViewModel)等的东西。问题是无论我呈现什么视图,URL 都不会改变以反映新的控制器/动作。当我的视图想要发布到不同的操作时,这会带来问题。我怎样才能解决这个问题?
我有一个方法...
[HttpPost]
public ActionResult Start(SomeViewModel someViewModel) { ... }
根据某些条件返回诸如 return View("Invalid")、View("NotFound")、View("Run", anotherViewModel)等的东西。问题是无论我呈现什么视图,URL 都不会改变以反映新的控制器/动作。当我的视图想要发布到不同的操作时,这会带来问题。我怎样才能解决这个问题?
如果要更改 URL,则需要重定向到与该 URL 关联的操作,例如
[HttpPost]
public ActionResult Start(SomeViewModel someViewModel)
{
...
return RedirectToAction("SomeOtherAction");
}
该操作SomeOtherAction将依次显示视图。
这些View(...)方法不会重定向,它们只是呈现当前请求的特定视图。如果您需要以视图的形式定位特定的 url,您可以将控制器/操作详细信息传递给 form 方法:
Html.BeginForm("action", "controller")
... ETC