gpt4 book ai didi

c# - 从不同的 Controller 直接调用 ASP.NET Controller 操作

转载 作者:可可西里 更新时间:2023-11-01 17:29:21 28 4
gpt4 key购买 nike

我有一种情况需要重定向到不同 Controller 中的 ASP.NET MVC 操作。我不能使用 RedirectToAction,因为我必须 POST 操作的参数以防止它们出现在 URL 中。

我试图像这样直接实例化和调用另一个 Controller 的 Action :

OtherController myOtherController = new OtherController();
myOtherController.ControllerContext = new ControllerContext(this.ControllerContext.RequestContext, myOtherController);
return await myOtherController.Edit(myGuid);

当我这样做时,另一个 Controller 的代码会执行,但我最终会遇到这个错误:

The model item passed into the dictionary is of type 'System.Data.Entity.DynamicProxies.OtherModel_BBCEF7C9378F4C4F097CC08FA2E508B8BD8D865E33093E31959919087A31348E', but this dictionary requires a model item of type 'ThisModel'.

有谁知道我是否可以使用当前方法使它正常工作?假设我必须使用 HTTP POST 操作并且不能在 URL 中包含参数,您是否可以推荐其他方法来实现此结果(除了组合 Controller )?
编辑:
请注意,我不认为我可以直接从客户端发布,因为我需要嵌套 Html.BeginForm

最佳答案

您实际上应该只使用 RedirectToAction 将浏览器推送到您想要的操作,而不是尝试这样做。正如您从@Andrei Olariu 代码中看到的那样,在构建 Controller (DI 然后是上下文和参数映射)的过程中,很多事情都在幕后发生,这些事情真的不应该手动完成并且很容易搞砸导致浪费时间思考为什么某些事情没有按预期运行。

关于c# - 从不同的 Controller 直接调用 ASP.NET Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028321/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com