我正在尝试提交表单,但我收到此错误。它似乎源于我的布局文件,因为我有两个不同的部分视图在布局内呈现出于多种目的。例如:
@{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");
}
答案 0 :(得分:2)
搜索子操作时会考虑“方法” - 因此当您处理POST请求时,在您查看调用Html.RenderAction("_MenuSearch", "Platform");
而不是public ActionResult _MenuSearch(LayoutViewModel viewModel)
时,将会选择HttpPost
,因为它标有{{1} }。
通常可以安全地使用ChildAction
属性标记一组特殊的操作来避免此类情况。