Область применения HttpContext.Current.Items в ASP.NET MVC 2 - PullRequest
1 голос
/ 10 мая 2011

Привет Внутри действия я установил HttpContext.Current.Items.Add(...). Теперь я перенаправляю на другое действие в том же контроллере. Я не могу получить текущий HttpContext.

Разве это невозможно? Есть ли решение этой проблемы вместо использования временных данных.

1 Ответ

3 голосов
/ 10 мая 2011

HttpContext доступен только во время текущего HTTP-запроса.Если вы перенаправляете на другое действие, это другой HTTP-запрос, отправленный браузером с другим HttpContext.Если вы хотите сохранить данные между запросами, вы можете использовать TempData (доступно только для 1 перенаправления) или Session .Под прикрытием TempData использует сессию в качестве хранилища, но автоматически перенаправляет ее после перенаправления.

Пример с TempData:

public ActionResult A()
{
    TempData["foo"] = "bar";
    return RedirectToAction("B");
}

public ActionResult B()
{
    // TempData["foo"] will be available here
    // if this action is called after redirecting
    // from A
    var bar = TempData["foo"] as string;

    // TempData["foo"] will no longer be available in C
    return RedirectToAction("C");
}

Пример с сессией:

public ActionResult A()
{
    Session["foo"] = "bar";
    return RedirectToAction("B");
}

public ActionResult B()
{
    var bar = Session["foo"] as string;
    // Session["foo"] will still be available in C
    return RedirectToAction("C");
}
...