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还是蛮有用处的
相对来讲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还是蛮有用处的
相关文章推荐
- 关于myeclipse WEB项目使用javabean方式整合jasperReport,Ireport设计模板,Linux错误处理,几天的研究心得
- web项目导入jquery.js时报错如何处理?
- 【ML项目】基于网络爬虫和数据挖掘算法的web招聘数据分析(一)——数据获取与处理
- Vue.js——60分钟webpack项目模板快速入门【8】
- vue-cli生成vue+webpack的项目模板怎么设置为vue1.0
- [源码学习]RazorTemplateEngine.GenerateCodeCore之CreateParser()方法
- 用Eclipse Maven 创建 Web 3.0 项目问题 正确的处理步骤
- 如何选择Javascript模板引擎(javascript template engine)?
- 用Vue-cli生成vue+webpack的项目模板
- SpringBoot--使用Thymeleaf模板开发web项目
- 如何:使用向导来处理项目模板 【转载】
- csdn上看到的一篇关于vue-cli的webpack模板项目配置文件分析
- 使用PowerShell找出具体某个站点所使用的模板(Web Template)名称?
- 【Web】Javascript、Python、Django模板配合处理URL Encode
- 创建Visual studio项目模板 vstemplate关键点纪要
- 如何在web项目中引用velocity模板引擎?
- vs.net2005创建web项目看不到解决方案的处理方法
- web项目log4j的配置模板
- 自己的web服务器项目-request请求和response响应处理(一)
- 【转贴】 Flex 预编译处理 与 手机项目、Web项目、Air项目自由转换