是否可以从类中呈现视图,而不是控制器?
例如,我有一个类将返回一些数据,比如控件,我想从我的视图中派生出来。
有可能吗?
提前致谢。
答案 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命名空间。