有没有办法从另一个控制器获取控制器的视图?
例如,我的HelperController有几个方法用于整个项目,我有在CursosController上调用的函数MontaCursosWall,这个函数需要读取属于CursosController的View。
在另一种情况下,我需要从HelperController内部的函数调用相同的函数(MontaCursosWall)来读取相同的视图。
我已经有了一个代码来阅读它,但它无法正常工作:
public string ToHtml(string pView, ControllerContext context)
{
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(context, pView);
var viewContext = new ViewContext(context, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(context, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
这就是我从MontaCursosWall中调用它的方式:
ToHtml(fileName, context).Split('|');
其中fileName是我的视图名称,上下文来自CursoController
答案 0 :(得分:3)
在我删除并重新创建我的观看后,我设法使其工作,似乎我的观点未被识别。
如果其他人有同样的问题,我会把我的代码留在这里。
public string ToHtml(string pView, ControllerContext context = null)
{
if (context == null)
context = ControllerContext;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(context, pView);
var viewContext = new ViewContext(context, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(context, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}