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

模板处理,一般有自定义文本替换、T4、RazorTemlpateEngine

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

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

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

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

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

ExpandedBlockStart.gif 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还是蛮有用处的

转载于:https://www.cnblogs.com/ofei/archive/2012/05/18/2507486.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值