不允许子操作执行重定向操作错误

时间:2015-09-29 01:50:23

标签: c# asp.net-mvc

我正在尝试提交表单,但我收到此错误。它似乎源于我的布局文件,因为我有两个不同的部分视图在布局内呈现出于多种目的。例如:

 @{Html.RenderAction("_MenuSearch", "Platform");}

这是在我的布局中,平台控制器使用它接收和管理某些数据。我可以毫无问题地发帖。当我用另一个模型提交表单时,会出现主要问题。我明白了:

  

不允许子操作执行重定向操作。   描述:执行当前Web请求期间发生未处理的异常。   请查看堆栈跟踪以获取更多信息   错误以及它在代码中的起源。

     

异常详细信息:System.InvalidOperationException:   不允许子操作执行重定向操作。

我需要在布局中包含这些部分视图,但我无法提交其他表单。我该怎么办?

编辑:MenuSearch方法:

    [HttpGet]
    public PartialViewResult _MenuSearch()
    {
        LayoutViewModel viewModel = new LayoutViewModel();
        return PartialView(viewModel);
    }
    [HttpPost]
    public ActionResult _MenuSearch(LayoutViewModel viewModel)
    {

        Guid? memberKey = _memberInfoService.GetMemberId(viewModel.MemberIdentifier);
        if (memberKey == null)
        {
            return RedirectToAction("NoResults", "Platform");
        }
        else
        {
            Session["MemberFound"] = true;
            Session["MemberGuid"] = memberKey;
            return RedirectToAction("MemberDisplay/" + memberKey.ToString(), "Platform");

        }

1 个答案:

答案 0 :(得分:2)

搜索子操作时会考虑“方法” - 因此当您处理POST请求时,在您查看调用Html.RenderAction("_MenuSearch", "Platform");而不是public ActionResult _MenuSearch(LayoutViewModel viewModel)时,将会选择HttpPost,因为它标有{{1} }。

通常可以安全地使用ChildAction属性标记一组特殊的操作来避免此类情况。