asp.net web项目中的剃刀视图

我正在研究视图引擎,Razor Views对我来说变得非常有趣。 我正在开发一个asp.net 4.0 Web表单应用程序。 Razor从我能找到的主要用于MVC应用程序的视图中查看示例。

是否可以将Razor视图集成到Web表单应用程序中? 这样做有益吗? 我希望这样做的主要原因是为我的应用程序架构创建一个新层,可能还有一个可以测试的新区域。

当然可以! 通过使用Microsoft的WebPages项目 ,您可以通过提供类/ razor文件的路径,以与正常加载UserControl相同的方式加载razor-classes。 你得到的是一个可以执行的WebPage实例,它会为你提供一个可以在你的页面上打印出来的字符串。

我自己做了这个, 为Composite C1 CMS实现了Razorfunction ,它的源代码可以从http://compositec1contrib.codeplex.com/免费获得。 我将在这里强调重要的部分。

确保您在web.config中注册了.cshtml文件的构建提供程序

确保您具有必要的system.web.webPages.razor配置设置

实例化.cshtml文件的实例,如var webPage = WebPage.CreateInstanceFromVirtualPath(_relativeFilePath); ( 见文件 )

像这样得到Razor类的输出

 var httpContext = new HttpContextWrapper(HttpContext.Current); var pageContext = new WebPageContext(httpContext, webPage, null); var sb = new StringBuilder(); using (var writer = new StringWriter(sb)) { webPage.ExecutePageHierarchy(pageContext, writer); } string output = sb.ToString(); 

只需在WebForms页面上输出字符串即可