Estoy trabajando en una aplicación Web ASP.NET MVC 3, donde uso TempData para almacenar un objeto del modelo, en el escenario en el que el usuario no se registra enTempData No está borrando
aquí está el flujo.:
- Utilice el formulario de envío.
- Código (filtro de acción especial) agrega modelo a TempData, redirige a la página de inicio de sesión.
- usuario redirigida hacia atrás para conseguir una actuación, que dice TempData y llama acción POST directamente
Después del paso 3, tendría que TempData pensamos que sería limpiado?
Aquí está el código:
[HttpGet]
public ActionResult Foo()
{
var prefilled = TempData["xxxx"] as MyModel;
if (prefilled != null)
{
return Foo(prefilled);
}
}
[HttpPost]
[StatefulAuthorize] // handles the tempdata storage and redirect to logon page
public ActionResult Foo(MyModel model)
{
// saves to db.. etc
}
He encontrado this article que establece:
- Los productos que sólo se dan de TempData al final de una solicitud si han sido marcados para su eliminación.
- Los elementos solo se etiquetan para su eliminación cuando se leen.
- Los artículos no tienen etiqueta llamando a TempData.Keep (clave).
- RedirectResult y RedirectToRouteResult siempre llama a TempData.Keep().
Bueno, leyéndolo con TempData["xxx"]
¿no es una "lectura" y por lo tanto deben etiquetarse para su eliminación?
Y la última me preocupa un poco, ya que estoy haciendo una redirección después del POST (P-R-G). Pero esto no se puede evitar.
¿Hay alguna manera en que pueda decir "abandonar este elemento". TempData.Remove? ¿O estoy haciendo esto mal?
Debe realizar una redirección completa y no devolver un segundo método de acción. Es por eso que no está funcionando. – Buildstarted
@BuildStarted - pero el método POST * does * do un redirect después de que haya terminado. No puede hacer una redirección a un método POST, ¿no será eso un GET? – RPM1984
Bueno, por lo que estoy leyendo basándome en los datos limitados es que estás haciendo un get y una redirección * en el código * a una publicación: no se llamará a 'StatefulAuthorize'. – Buildstarted