Ошибка RedirectToAction? - PullRequest
       13

Ошибка RedirectToAction?

3 голосов
/ 18 декабря 2008

У меня есть следующий код:

Контроллер:

public ActionResult Step1()
{
        return View();
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Step1(FormCollection form)
{
        TempData["messageStatus"] = new Random().Next(1, 1000);
        return RedirectToAction("Step1");
}

Вид:

<%=TempData["messageStatus"]%>

в первый раз, например, я получаю 12345 , но когда я запрашиваю второй раз, конечно, я должен получить что-то другое вместо 12345 например 54321 но нет, я получаю тот же результат 12345 , как вы можете это объяснить? RedirectToAction кеш страниц?

где это означает, что я должен поместить Guid в свои URL для решения проблем с кешем? что ты думаешь об этой проблеме?

Ответы [ 3 ]

11 голосов
/ 18 декабря 2008

Полагаю, у вас проблемы с кэшированием. Это не проблема с перенаправлением к действию. Все, что делает RedirectToAction - выдает ответ перенаправления вашему браузеру с просьбой запросить Step01. Затем ваш браузер делает запрос на Step01.

В этом случае ваш браузер может кэшировать Step01. Поэтому вам нужно добавить заголовок Response в STep01, указывающий, что он никогда не должен кэшироваться. Вы можете сделать это так:

[OutputCache(Location = OutputCacheLocation.None)]
public ActionResult Step1()
{
        return View();
}

Или вы можете добавить случайную строку запроса к перенаправлению на вызов действия, передав произвольное значение.

1 голос
/ 18 декабря 2008

Не создавайте новый объект Random каждый раз. Используйте тот же. Помните, что .Net Random - это всего лишь генератор псевдослучайных чисел.

0 голосов
/ 18 декабря 2008

Попробуйте это:

TempData["messageStatus"] = new Random(DateTime.Now.Millisecond).Next(1, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...