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

ama*_*eur 5 c# asp.net views razor

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

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

Pau*_*erø 3

当然可以!通过使用Microsoft 的WebPages 项目,您可以通过提供类/razor 文件的路径,以与通常加载 UserControl 相同的方式加载 razor 类。您返回的是一个可以执行的网页实例,它会给您一个可以在页面上打印的字符串。

我自己完成了这项工作,为 Composite C1 CMS 实现了 Razor 功能,并且可以从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();
Run Code Online (Sandbox Code Playgroud)

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