MVC3 Почему я получаю сообщение об ошибке «Дочерним действиям запрещено выполнять действия перенаправления»? - PullRequest
5 голосов
/ 20 марта 2012

Я получил действие Список

    //[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, но безуспешно.

1 Ответ

3 голосов
/ 20 марта 2012

Информация о перенаправлении хранится в заголовке ответа.Тем не менее, ответ уже отправляется, когда дочернее действие выполняется, поэтому заголовки не могут быть записаны.

Короче говоря, нет никакого способа выполнить перенаправление от дочернего действия, кроме как с помощью JavaScript на стороне клиента..

...