我有一个动作列表
//[HttpGet] (will come back to that!)
public ViewResult List(int page = 1)
{
//blah blah blah
return View(viewModel);
}
在它的视图中我们渲染动作:
@{
Html.RenderAction("UpdateSearch");
}
行动定义:
[ChildActionOnly]
[HttpGet]
public PartialViewResult UpdateSearch()
{
// do something and display a form in view
return PartialView(so);
}
[HttpPost]
public RedirectToRouteResult UpdateSearch(Options searchOptions)
{
// do something and redirect to List
return RedirectToAction("List");
}
我得到:每当有人提交表单时,不允许子操作执行重定向操作异常。我是MVC3的新手,但看起来重定向也是一个POST,因为如果[HttpGet]上面的List方法被取消注释“无法找到资源”。
如何在重定向上更改Http方法或者我做错了什么?我确实试过Bing,但没有成功。
答案 0 :(得分:3)
重定向信息存储在响应标头中。但是,在运行子操作时已经发送了响应,因此无法写入标头。
简而言之,除了在客户端使用javascript之外,没有办法从子操作执行重定向。