我正在研究视图引擎,Razor Views对我来说非常有趣。我正在开发一个asp.net 4.0 Web表单应用程序。 Razor从我能找到的主要是MVC应用程序中查看示例。
是否可以将Razor视图集成到Web表单应用程序中?这样做有益吗?我希望这样做的主要原因是为我的应用程序架构创建一个新层,可能还有一个可以测试的新区域。
答案 0 :(得分:3)
当然可以!通过使用Microsoft的WebPages project,您可以通过提供类/ razor文件的路径,以与正常加载UserControl相同的方式加载razor-classes。你得到的是一个WebPage的实例,你可以执行它,它将为你提供一个可以在你的页面上打印出来的字符串。
我自己完成了这项工作,实施了Razor functionality for Composite C1 CMS,其源代码可以从http://compositec1contrib.codeplex.com/免费获得。我将在这里强调重要的部分。
确保您拥有在web.config
中注册的.cshtml文件的构建提供程序确保您具有必要的system.web.webPages.razor配置设置
实例化.cshtml文件的实例,例如var webPage = WebPage.CreateInstanceFromVirtualPath(_relativeFilePath);
(see doc)
像这样获取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页面上输出字符串