从另一个控制器视图到字符串
本文关键字:字符串 视图 控制器 另一个 | 更新日期: 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);
无论如何,为什么需要转换为字符串呢?