代码之家  ›  专栏  ›  技术社区  ›  DucDigital

将视图呈现到控制器外部的字符串?

  •  2
  • DucDigital  · 技术社区  · 15 年前

    是否可以从不是控制器的类中呈现视图?

    例如,我有一个类,它将返回一些数据,比如控件,我想从我的视图中派生这些数据。

    有可能吗?

    提前谢谢。

    3 回复  |  直到 15 年前
        1
  •  -3
  •   Haacked    15 年前

    在一个视图中,我们有一个名为html.partial的方法,它将一个部分呈现给一个字符串。在控制器中,可以实例化htmlhelper实例,然后对其调用部分扩展方法。确保在控制器中导入system.web.mvc.html命名空间。

        2
  •  4
  •   Josh Noe    11 年前

    开源Razor引擎正是您所需要的: https://github.com/Antaris/RazorEngine

    string razorText = System.IO.File.ReadAllText(razorTemplateFileLocation);
    string emailBody = Razor.Parse(razorText, yourViewModel);
    
        3
  •  2
  •   Aximili    8 年前

    我用这个做的:

    Rendering ASP.NET MVC Razor Views outside of MVC

    很容易。你只需要添加一个类( ViewRenderer.cs )它已经可以使用了。

    例如,我可以将此代码放在控制器外部:

    string html = ViewRenderer.RenderView($"~/Views/Partials/Email/WelcomeEmail.cshtml", viewModel);