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

时间:2010-01-19 17:37:05

标签: asp.net-mvc

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

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

有可能吗?

提前致谢。

3 个答案:

答案 0 :(得分:4)

开源Razor Engine完全符合您的需求:https://github.com/Antaris/RazorEngine

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

答案 1 :(得分:2)

我是用它做的:

Rendering ASP.NET MVC Razor Views outside of MVC

非常简单。您只需添加一个类(ViewRenderer.cs)即可使用。

例如,我可以将此代码放在Controller之外:

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

答案 2 :(得分:-4)

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