从另一个控制器视图到字符串

本文关键字:字符串 视图 控制器 另一个 | 更新日期: 2023-09-27 18:18:32

我已经按照Vdex的建议做了:https://stackoverflow.com/a/5801502/973485用他发现的RenderPartialToString方法。它像这样完美地工作:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult Test()
    {
        string t = ViewToString.RenderPartialToString("Index", null, ControllerContext);
        return Content(t);
    }
}

但是如果我想从另一个控制器渲染Home>索引,我得到:

Value cannot be null.
Parameter name: controllerContext

:

public class FooController : Controller
{
    public ActionResult Index()
    {
        string t = ViewToString.RenderPartialToString("Index", null, new HomeController().ControllerContext);
        return Content(t);
    }
}

是否有任何方法从另一个控制器传递视图到字符串?我尝试了许多不同的方法,但它们都在ControllerContext中失败了。很多谢谢!

Update: Why i need do this:

想象我有一个充满小部件的网站,每个页面上的小部件数量是动态的,所以我不能在我的cshtml文件中硬编码它们。但是在该文件中,有不同的区域定义了小部件打印出来的地方。要打印出这些小部件,我有一个IWidgetController列表,其中包含所有可用的不同小部件,并且界面说它们需要包含用于编辑,新建和视图的ActionResult。小部件的例子:CalenderController, NewsController, GalleryController等等…所以在这些区域中,我需要打印出每个控制器的内容。现在我也可以加载url,但我认为这样做从内部会更快…对吧?

从另一个控制器视图到字符串

试试这个:

string t = ViewToString.RenderPartialToString("Index", null, this.ControllerContext);
无论如何,为什么需要转换为字符串呢?