Asp.net MVC 3 WebCache странное поведение - PullRequest
2 голосов
/ 30 марта 2012

Я ищу (если возможно) подробное объяснение того, почему происходит следующее:

Я использую статический класс 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 и не изменять кэш?

1 Ответ

3 голосов
/ 02 апреля 2012

Когда вы обращаетесь к кешу, вы обращаетесь к ссылке на объект в кеш.

Вот почему при увеличении его значения оно обновляется и сохраняется в кеше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...