MVC-Razor生成HTML封装
2015-11-16 16:27
543 查看
/// <summary> /// Razor模版助手 /// </summary> public class RazorHelper { private static readonly object LockObj = new object(); private static readonly ObjectCache _cache = MemoryCache.Default; /// <summary> /// 缓存 /// </summary> private static ObjectCache Cache { get { return _cache; } } /// <summary> /// 根据路径解析 /// </summary> /// <param name="filePath">cshtml 文件地址</param> /// <param name="obj"></param> /// <param name="viewBags"></param> /// <returns></returns> public static string ParseCSHtmlFile(string filePath, object obj, DynamicViewBag viewBags = null) { //+ DateTime.Now.ToString("yyyy-mm-dd hh:mm:ss:fff") string value = ""; string key = filePath + "_ParseCSHtmlFile"; var obj2 = Cache.Get(key);// Cache.Contains(key);// CacheHelper.GetCache<string>(key, "HYService.Util.RazorHelper"); if (obj2 != null) { value = (string)obj2; } else { FileStream fs = null; StreamReader sr = null; try { if (!File.Exists(filePath)) return string.Empty; fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); sr = new StreamReader(fs, System.Text.Encoding.UTF8); value = sr.ReadToEnd(); } catch (Exception ex) { Debug.WriteLine(ex); } finally { if (sr != null) sr.Close(); if (fs != null) fs.Close(); } if (string.IsNullOrWhiteSpace(value) == false) { if (Cache.Contains(key) == false) { lock (LockObj) { if (Cache.Contains(key) == false) { var policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(1)//.AddMinutes(2) }; Cache.Add(key, value, policy); } } } } } return Engine.Razor.RunCompile(value, key, null, obj, viewBags); } /// <summary> /// 根据字符串解析 /// </summary> /// <param name="fileContext"></param> /// <param name="obj"></param> /// <param name="viewBags"></param> /// <returns></returns> public static string Parse(string fileContext, object obj, DynamicViewBag viewBags = null) { if (obj == null) { return fileContext; } return Engine.Razor.RunCompile(fileContext, Guid.NewGuid().ToString(), null, obj, viewBags); } }
相关文章推荐
- C#.NET获取拨号连接的宽带连接方法
- C#.Net ArrayList的使用方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- .net(c#)中的new关键字详细介绍
- 由vbs sort引发.NET Framework之间的关系说明
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- .NET中的async和await关键字使用及Task异步调用实例
- .Net中的json操作类用法分析
- .net实现序列化与反序列化实例解析
- .NET中的Timer类型用法详解
- 关于.net(C#)中的跨进程访问的问题
- .NET实现父窗体关闭而不影响子窗体的方法
- 基于.Net中的数字与日期格式化规则助记词的使用详解
- .NET微信公众号开发之公众号消息处理
- .Net下的签名与混淆图文分析
- .NET 扩展实现代码
- .NET实现定时发送邮件代码(两种方式)
- .net实现文件读写的几种常用方法
- .net文件上传时实现通过文件头确认文件类型的方法
- 四个常用的.NET的SQLHELPER方法实例