将视图渲染到控制器外部的字符串?

问题描述:

是否有可能从类,而不是控制器呈现视图?将视图渲染到控制器外部的字符串?

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

可能吗?

在此先感谢。

在视图中,我们有一个名为Html.Partial的方法,它将局部渲染为字符串。在你的控制器中,你可以实例化一个HtmlHelper实例,然后调用它的部分扩展方法。确保在控制器中导入System.Web.Mvc.Html命名空间。

+2

什么一个奇怪的问题接受。问题:“从不是控制器的类呈现视图?”答:“在你的控制器里......” – 2013-09-18 19:58:27

开源剃刀引擎不正是你所需要的:https://github.com/Antaris/RazorEngine

string razorText = System.IO.File.ReadAllText(razorTemplateFileLocation); 
string emailBody = Razor.Parse(razorText, yourViewModel); 

我做到了用这个:

Rendering ASP.NET MVC Razor Views outside of MVC

很容易。您只需添加一个班级(ViewRenderer.cs)即可使用。

例如,我可以把这个代码外部控制器:

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