列出<t>缓存,类迭代,计数属性</t>

时间:2013-04-23 07:42:09

标签: asp.net episerver

HY,

我创建了一个自定义List,它试图缓存,但是当从缓存中返回时,缓存的对象数为0.示例代码如下:

List<CategoryEntry> categs = (List<CategoryEntry>)EPiServer.CacheManager.Get("test");

if(categs == null || categs.Count == 0)
{
    categs = ConstructCategories();
    EPiServer.CacheManager.Add("test", categs);
}

//Further down displaying the categories

用例:

First Pageload(构建后)缓存为空,categs为null,

第二个页面加载缓存将是,但是因为categs.Count will be 0而无法从那里获取并重新构建缓存....

CategoryEntry类:

 [serializable]
 public class CategoryEntry{
    public string Title { get; set; }
    public string URL { get; set; }
    public int CategoryId { get; set; }
    public int CompanyPageId { get; set; }
    public int ParentCategoryEntryId { get; set; }
    public int Indent { get; set; }

}

问题应该是在保存缓存时。它保存为object,当我们获取缓存时,我们将其转换为List<CategoryEntry>

还想出我是否使用List<string>而不是使用List<CategoryEntry>执行此操作 然后缓存工作完美!。

List<string>工作的示例:

List<string> test = (List<string>)EPiServer.CacheManager.Get("sindex");
if (test == null)
{
   test = new List<string>();

   test.Add("item1");
   test.Add("item2");
   test.Add("item3");
   test.Add("item4");
   test.Add("item5");

   EPiServer.CacheManager.Add("sindex", test);
}
else
{
   Response.Write("It works: elements  "+ test.Count);
}

另一个尝试是我已经缓存了一个CategoryEntry的简单实例,这也有效,问题是我尝试保存为List<CategoryEntry>

任何帮助都会被贬低,谢谢。

0 个答案:

没有答案