5

我有一个动作列表

    //[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,因为如果未注释 List 方法上面的 [HttpGet],则会发生“找不到资源”。

如何更改重定向时的 Http 方法或我做错了什么?我确实尝试过 Bing 它,但没有成功。

4

1 回答 1

3

重定向信息存储在响应标头中。但是,在运行子操作时已经发送了响应,因此无法写入标头。

简而言之,除了在客户端使用 javascript 之外,没有其他方法可以从子操作执行重定向。

于 2012-03-20T15:24:04.300 回答