您的位置:首页 > 其它

web项目下,甩开RazorTemplateEngine做模板处理

2012-05-18 11:24 357 查看
模板处理,一般有自定义文本替换、T4、RazorTemlpateEngine

相对来讲T4成熟一些,毕竟也发展了几个版本,与vs集成,协作程度毕竟高,但是默认情况下没智能提示,免费的智能提示插件还不够好

而RazorTemplateEngine使用Razor语法,有相当大的亲和力。

因此RazorTemplateEngine陪我渡过不少时光。

最近认真了解了mvc中页面生成的处理方式,了解到实际上在web项目下,可以使用内置的方式处理模板文本生成。

其实是挺简单的,代码如下:

View Code public static string ProcessTemplate<T>(string virtualPath, string baseUrl, T model)
{
using (var writer = new System.IO.StringWriter())
{
var request = new HttpRequest(virtualPath, baseUrl + virtualPath, null);
var response = new HttpResponse(writer);
var context = new HttpContextWrapper(new HttpContext(request, response));
var type = BuildManager.GetCompiledType(virtualPath);
var instance = Activator.CreateInstance(type) as WebViewPage;
var webPageContext = new WebPageContext(context,
instance,
model);
instance.Context = context;
instance.ViewData.Model = model;
instance.ViewContext = new ViewContext();
instance.InitHelpers();

instance.ExecutePageHierarchy(webPageContext, writer);
return writer.ToString();
}
}调用方法为

ProcessTemplate("~/Views/Template/Register.cshtml", baseUrl, model)

简单吧

这样处理后,就不再需要使用RazorTemplateEngine了

当然在winform或console项目下RazorTemplateEngine还是蛮有用处的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: