【发布时间】:2017-02-22 18:40:43
【问题描述】:
我有一个简单的剃须刀文件 _modelTemplate.cshtml 和一个 poco 类模型。 我希望能够通过将模型传递给 _modelTemplate.cshtml 来呈现 HTML 字符串
原因:我正在开发一个遗留的 WebForms 应用程序,并且真的很想使用 razor 作为模板引擎来为不需要 WebForms 服务器控件或回发的特定部分生成干净的 HTML。
我不需要 Razor 文件中的任何 MVC 帮助程序,只需要一个简单的模板和一个绑定模型。我想我可以使用 razor 生成 HTML,然后将该呈现的字符串绑定到 WebForm 的 .aspx 页面中的 Literals 的 .Text 属性。
我在想这样的事情:
Lit1.Text = RenderRazorTemplateAsString(razorFilePath, model);
有没有办法做到这一点,还是我必须建立一些东西?
【问题讨论】:
-
controller.ViewData.Model = 模型;字符串结果 = string.Empty;使用 (StringWriter writer = new StringWriter()) { ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName); ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer); viewResult.View.Render(viewContext, writer);结果 = writer.ToString(); }
-
或者你只是想要 Html.Raw()?
-
谢谢,但我不确定你在说什么。这不是 MVC 项目,而是 WebForms。我只需要从 poco 模型和模板渲染 html。我只想使用 Razor 作为没有 MVC 的引擎。所以,我想我只会添加对 System.Web.Razor 的引用,如果需要的话,可能还会添加 System.Web.WebPages。
-
对不起...WebForms 对我来说太经典了..
-
有趣的问题。我没有答案,但对这种可能性感到好奇。似乎要让 Razor 工作,您需要使用 Razor 指令嵌入页面的视图或 HTML 部分?为此,您需要创建一个带有 .cshtml 扩展名的页面,此时我认为您最好只写出自己的 HTML