• asp.net mvc中应用缓存依赖文件(xml)的一个小demo


    最近项目中加了一个通用模块,就是根据一些特殊的tag,然后根据处理这些tag在同一个视图中加载不同的model(个人觉得此功能无任何意义,只是把不同的代码放在了同一个View中)。

    我的处理思路是这样的,首先将所有的tag放置在xml文件中,然后根据action中传入的tag和xml中的tag对比进而向view中传入不同的数据。为了避免频繁的文件IO,故将遍历xml所有tag之后的结果(集合)进行了缓存,以后的每次请求只通过比对缓存来做处理。不过首次请求是数据并没有缓存,所以要做一下小小的处理。进入简单的代码吧:

     1  public ActionResult ViewMore(string _type)
     2         {
     3             if (!string.IsNullOrEmpty(_type))
     4             {
     5                 ViewMore form = new ViewMore();
     6                 List<string> list = new List<string>();
     7                 var query = HttpRuntime.Cache["Items"] as List<string>;
     8                 if (query == null || query.Count == 0)
     9                 {
    10                     XElement xElement = XElement.Load(Server.MapPath("/Content/ViewMore.xml"));
    11                     var query_ = from elements in xElement.Elements("child")
    12                                  select elements.Value;
    13                     if (query_.Count() > 0)
    14                     {
    15                         foreach (var v in query_)
    16                         {
    17                             list.Add(v.ToString());
    18                         }
    19                         HttpRuntime.Cache.Insert("Items", list, new CacheDependency(Server.MapPath("/Content/ViewMore.xml")));
    20                     }
    21                     else
    22                         return View();
    23                 }
    24                 if ((query != null && query.Contains(_type)) || list.Contains(_type))
    25                 {
    26                     materialIndex.Institutes = this._instituteService.FindAllInstitutes();
    27                     form.MateriaIndex = materialIndex;
    28                     form.MateriaIndex.Institutes = materialIndex.Institutes;
    29                     return View(form);
    30                 }
    31                 else
    32                     return View();
    33             }
    34             return View();
    35         }
    View Code
    Don't go too far and forget why starting!
  • 相关阅读:
    python取一个字符串中最多出现次数的词
    python openpyxl 操作 excel
    微信公众平台开发
    Oracle
    微信公众平台开发
    微信公众平台开发
    Html 转义字符那些事儿
    Linq DataTable表连接
    使用WeUI+JS 的label包含input触发两次的问题
    Html 图片上传
  • 原文地址:https://www.cnblogs.com/surfing/p/3482420.html
Copyright © 2020-2023  润新知