Pregunta

Estoy trabajando en una aplicación ASP.NET MVC y me he encontrado con algo extraño.

Tengo dos acciones de controlador como esta:

[CustomAuthorize(Roles = SiteRoles.Admin)]
public ActionResult Review(int? id)

[CustomAuthorize(Roles = SiteRoles.Admin)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Review(AdReview data)

Primero llamo a la acción Review con null como parámetro, esto abrirá una página web con una lista de elementos.Los elementos están vinculados a la primera acción Revisar con el ID configurado.

Cuando se haya proporcionado la identificación a la acción de revisión, se devolverá una página web de edición para este artículo.Al presionar enviar después de algunos cambios, terminaremos en la segunda acción de revisión (publicación).Aquí se guardará el artículo.

Todo bien hasta ahora.

Ahora, en la última acción Revisar (publicación) obtuve el siguiente código al final:

return RedirectToAction("Review", "Ad");

Esto activará la primera acción de revisión nuevamente, ¿el problema es que proporcionará la identificación anterior?Mi pensamiento era que RedirectToAction no proporcionará ningún parámetro.

¿Fue útil?

Solución

¿Mi idea era que RedirectToAction no proporcionaría ningún parámetro?

Su comprensión es incorrecta.Los parámetros presentes en modelstate se reenvían automáticamente si la URL de destino contiene un parámetro de ruta con el mismo nombre.En este caso, tiene un parámetro id que se está publicando (probablemente como parte de un campo de entrada o parte de la url) y cuando se redirige a la acción de índice original, porque las definiciones de ruta tienen un token id al final del RedirectToActionel método lo llenará.

Como solución para evitar este comportamiento, podría especificar explícitamente que el parámetro id no se debe enviar al redireccionar:

return RedirectToAction("Index", "Ad", new { id = "" });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top