获取控制器上下文之外的视图

本文关键字:视图 控制器 上下文 获取 | 更新日期: 2023-09-27 18:30:13

是否有任何方法可以从另一个控制器获取控制器的视图?

例如,我的HelperController为整个项目提供了几个方法,我有在CursosController上调用的函数MontaCursosWall,这个函数需要读取属于CursosCoontroller的视图。

在另一种情况下,我需要这个相同的函数(MontaCursosWall),它是从HelperController内部的函数调用的,以读取相同的视图。

我已经有一个代码可以阅读,但它不起作用:

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

获取控制器上下文之外的视图

在删除并重新创建视图后,我设法使其正常工作,似乎我的视图没有被识别。

如果其他人也有同样的问题,我会把我的代码留在这里。

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