当前位置: 网学 > 编程文档 > 其他类别 > 正文

逃脱Asp.Net MVC框架枷锁 使用Razor视图引擎

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
二步就简单多了,就和任何静态类一样,用反射创建实例,然后复制Model对象执行模板,最后输出结果是,就自动吧Model类的数据嵌入了。

  1. public static string Render<T>(T model,string template_path)  
  2.       {  
  3.           var type = Compile<T>(template_path);  
  4.           //创建视图实例  
  5.           var instance = (TemplateBase<T>)Activator.CreateInstance(type);  
  6.    
  7.           //执行模板(把数据嵌入文件)  
  8.           instance.Model = model;  
  9.           instance.Execute();  
  10.           //输出最终结果  
  11.           var result = instance.Result;  
  12.    
  13.           return result;  
  14.       } 

最后,看看视图模板类,一个基类和一个泛型基类,后者用于前类型Model

  1. public abstract class TemplateBase  
  2.     {  
  3.         public string Layout { getset; }  
  4.         public UrlHelper Url { getset; }  
  5.         public Func<string> RenderBody { getset; }  
  6.         public string Path { getinternal set; }  
  7.         public string Result { get { return Writer.ToString(); } }  
  8.    
  9.         protected TemplateBase()  
  10.         {  
  11.         }  
  12.    
  13.         public TextWriter Writer  
  14.         {  
  15.             get 
  16.             {  
  17.                 if(writer==null)  
  18.                 {writer = new StringWriter();  
  19.                 }  
  20.                 return writer;  
  21.             }  
  22.             set {  
  23.                 writer = value;  
  24.             }  
  25.         }  
  26.    
  27.         private TextWriter writer;  
  28.    
  29.         public void Clear() {  
  30.            Writer.Flush();  
  31.         }  
  32.    
  33.         public virtual void Execute() { }  
  34.    
  35.         public void Write(object @object) {  
  36.             if (@object == null) {  
  37.                 return;  
  38.             }  
  39.             Writer.Write(@object);  
  40.         }  
  41.    
  42.         public void WriteLiteral(string @string) {  
  43.             if (@string == null) {  
  44.                 return;  
  45.             }  
  46.             Writer.Write(@string);  
  47.         }  
  48.    
  49.         public static void WriteLiteralTo(TextWriter writer, string literal) {  
  50.             if (literal == null) {  
  51.                 return;  
  52.             }  
  53.             writer.Write(literal);  
  54.         }  
  55.    
  56.         public static void WriteTo(TextWriter writer, object obj) {  
  57.             if (obj == null) {  
  58.                 return;  
  59.             }  
  60.             writer.Write(obj);  
  61.         }  
  62.     }  
  63.     public abstract class TemplateBase<T> :TemplateBase  
  64.     {  
  65.         public T Model { getset; }              
  66.     } 

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号