繁体   English   中英

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

[英]Get View outside Controller Context

有什么方法可以从另一个Controller获取一个Controller的视图吗?

例如,我的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

删除并重新创建视图后,我设法使其正常工作,看来我的视图未被认可。

如果其他人遇到同样的问题,我将把代码留在这里。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM