asp.net mvc 3 WebCache的怪异行为

本文关键字:WebCache net mvc asp | 更新日期: 2023-09-27 18:29:32

我正在寻找(如果可能的话)为什么会发生以下事情的详细解释:

我正在使用asp.net的WebCache静态类将我的对象存储在中

   public ActionResult Index(int page = 0)
    {
        const int count = 5;
        var recordsToSkip = page*count;
        if (WebCache.Get("page-" + page + "-5") == null)
        {
            var records =
                db.Submissions.OrderByDescending(x => x.SubmitedOn).Skip(recordsToSkip).Take(count).ToList();
            var index = new IndexViewModel()
                            {
                                ChallengeEntries = records,
                                CurrentPage = 0
                            };
            WebCache.Set("page-" + page + "-5", index);
        }
        return View(WebCache.Get("page-" + page + "-5"));
    }

我的观点是:

<div class="pagination">
        @Model.CurrentPage  // here just to let me watch the value of the current page
        @if(Model.CurrentPage >=1)
        {

            @Html.ActionLink("Previous", "Index", new { page = Model.CurrentPage-- })
        }
        @if(Model.ChallengeEntries.Count()>=5)
        {
            @Html.ActionLink("Next", "Index", new { page = Model.CurrentPage++ })
        }
    </div> 

所以我想知道为什么Model.CurrentPage++会增加当前缓存对象的值并保存它,而不是只返回值+1而不修改缓存?

asp.net mvc 3 WebCache的怪异行为

当您从缓存进行访问时,您正在访问缓存中对象的引用。

这就是为什么当增加它的值时,它会被更新并保存在缓存中。