gpt4 book ai didi

c# - 如何在 Action 中调用和返回另一个 Controller Action 的输出?

转载 作者:行者123 更新时间:2023-11-30 13:20:36 25 4
gpt4 key购买 nike

我们正在为我们的项目开发“插件”架构,以扩展软件的功能,客户可以编写自己的 Controller 并将其包含在项目中。 (插件将根据客户端将添加到架构中的表生成不同的输出)。

插件是通过 Controller 操作中的操作访问的,比如 /reports/get/?type=spending

因此在这种情况下,该操作必须将 Controller 定位在“插件”区域内并调用索引操作(例如,areas/plugin/spending/index)。如何在 /reports/get/?type=spending 操作中调用此操作并获取其输出?

最佳答案

Html.RenderAction Method用于在 View 中呈现其他操作的输出。受此启发, Controller 中的相同内容将是

using System.Web.Mvc.Html;
public void Index()
{
StringBuilder resultContainer = new StringBuilder();
StringWriter sw = new StringWriter(resultContainer);

ViewContext viewContext = new ViewContext(ControllerContext, new WebFormView(ControllerContext, "fakePath"), ViewData, TempData, sw);

HtmlHelper helper = new HtmlHelper(viewContext, new ViewPage());

helper.RenderAction("create");

sw.Flush();
sw.Close();
resultContainer.ToString(); //"This is output from Create action"
}
public ActionResult Create()
{
return Content("This is output from Create action");
}

实际上,RenderAction可以传递你想要的所有路由数据,而不仅仅是action名称

关于c# - 如何在 Action 中调用和返回另一个 Controller Action 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367288/

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