我遇到了需要重定向到其他控制器中的asp.net mvc操作的情况。我不能使用RedirectToAction,因为我必须发布操作的参数,以使它们不在URL中。
我试图实例化并直接调用另一个控制器的操作,如下所示:
OtherController myOtherController = new OtherController();
myOtherController.ControllerContext = new ControllerContext(this.ControllerContext.RequestContext, myOtherController);
return await myOtherController.Edit(myGuid);
当我这样做时,另一个控制器的代码会执行,但我最终会出现以下错误:
传递到字典中的模型项的类型为
“系统。数据。实体。”,
但此词典需要“this model”类型的模型项。
有人知道我能不能用现在的方法来解决这个问题吗?假设我必须使用一个http post操作,并且不能在url中包含参数,那么您是否建议使用不同的方法来实现这个结果(除了组合控制器之外)?
编辑:
请注意,我不认为我可以直接从客户端发帖,因为我需要嵌套
Html.BeginForm
。 最佳答案
你真的应该使用redirectToAction将浏览器推到你想要的操作,而不是像这样尝试。正如您可以从@andrei olariu代码中看到的,在构建控制器(di然后是上下文和参数映射)的过程中,很多事情都是在幕后发生的,而这些事情实际上不应该手动完成,而且很容易搞砸,从而浪费了数小时去想为什么某些事情没有按预期的方式运行。