从另一个控制器查看字符串

我已经完成了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); } } 

但如果我想从另一个Controller渲染Home> Index,我得到:

 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); } } 

有没有办法将View从另一个Controller传递给字符串? 我尝试了很多不同的方法,它们都在ControllerContext中失败了。 非常感谢!

更新:为什么我需要这样做:

想象一下,我有一个装满小部件的网站,每个页面上的小部件数量都是动态的,所以我不能在我的cshtml文件中对它们进行硬编码。 但是在该文件中,定义了小部件被打印出来的不同区域。 为了打印出这些小部件,我有一个IWidgetController列表,其中包含可用的不同小部件,以及他们需要包含ActionResult以进行编辑,新建和视图的接口。 小部件的例子:CalenderController,NewsController,GalleryController等等……所以在那些区域我需要打印出每个控制器的内容。 现在我也可以加载URLHTML,但我认为从内部做它会更快……对吗?

试试这个:

 string t = ViewToString.RenderPartialToString("Index", null, this.ControllerContext); 

无论如何,为什么你需要转换为字符串?