Почему атрибут tempdata сохраняется после первого чтения? - PullRequest
1 голос
/ 11 июля 2020

Предполагается, что временные данные были прочитаны один раз и удалены, и это было нормально, прежде чем использовать их в качестве атрибута, теперь при использовании этого атрибута он сохраняется до следующего запроса после чтения в первый раз вот мой пример кода Страница A

public class AModel : PageModel
    {
        [TempData]
        public string Message { get; set; }
        public void OnGet()
        {
            Message = "test Page A";
        }
    }

<h1>A</h1>
    
<p>@Model.Message</p>

<a asp-page="b">Page B</a>

Страница B

    public class BModel : PageModel
{
    [TempData]
    public string Message { get; set; }

    public void OnGet()
    {
    }
}

<h1>B</h1>

<p>@Model.Message</p>

<a asp-page="A">Page A</a>

при переходе со страницы A на страницу b сообщение со страницы A не должно отображаться, но я получил сообщение, появившееся на странице B, результат будет выглядеть так

Тест B Страница A

Страница A

1 Ответ

2 голосов
/ 11 июля 2020

при переходе со страницы A на страницу b сообщение со страницы A не должно отображаться

Если вы выполните тест со следующим кодом, вы легко обнаружите, что фрагмент кода @Model.Message в A.cshtml не считывает значение TempData.

<h1>A</h1>

using TempData["Message"]: <p>@TempData["Message"]</p>
<hr />
using Model.Message: <p>@Model.Message</p>
<hr />
using TempData.Peek("Message"): <p>@TempData.Peek("Message")</p>
<hr />
using Model.Message: <p>@Model.Message</p>

<a asp-page="b">Page B</a>

Результат вышеуказанного тестирования

enter image description here

And as mentoned about TempData in this do c:

This property stores data until it's read in another request.
...