Временные данные не становятся пустыми (ноль) при нажатии (кнопка) через браузер - PullRequest
2 голосов
/ 11 апреля 2019

Я отправляю сообщение об успехе в response из API в controller и устанавливаю его значение в TempData["Message"], теперь перенаправляя на какой-то другой метод действия. как это:

[HttpPost]
public ActionResult AddFeedbackCategory(IFeedbackCategoryModel modelData)
{
     var message = JsonConvert.DeserializeObject<ApiResponse>(response);
     TempData["Message"] = message.Message;
     return RedirectToAction("CategoryList");
}

[HttpGet]
public ActionResult CategoryList()
{
     var categoryData = JsonConvert.DeserializeObject<List<CategoryModel>>(data);
     return View(categoryData);
}

и в view из CategoryList я написал код примерно такой:

  @if (TempData["Message"] != null)
    {
        <div id="snackbar" class="snack_success">@TempData["Message"].ToString() 
        </div>
        TempData["Message"] = null;
    }

Это помогает показывать сообщение об успешном выполнении (сохраняется в течение 2 секунд) всякий раз, когда я добавляю какую-либо запись в свою систему, как эта.

enter image description here

Теперь проблема в том, что когда я нажимаю кнопку «Назад», а затем снова возвращаюсь в список категорий, это сообщение об успехе появляется снова. Почему его значение не становится нулевым? есть какая-то конкретная причина или я что-то не так делаю?

1 Ответ

3 голосов
/ 12 апреля 2019

Допустим, вы переходите со страницы A на страницу B. Затем нажимаете Back на странице B (чтобы вернуться на страницу A).Если вы не явно задаете заголовки кэширования на странице A, браузер может решить отобразить старую версию страницы A (которую она отображала перед переходом на страницу B).

Чтобы решить эту проблему, можно отключить кэширование в браузере.Например, используйте это для метода действия конечной точки GET:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*", Location = OutputCacheLocation.None)]

Это обеспечит, что при нажатии кнопки «Назад» браузер будет вынужден подключиться к серверу.снова перерисовать страницу A (а не просто показать старую версию страницы A).

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