Question

Je travaille sur une application ASP.NET MVC et j'ai couru sur une chose étrange.

J'ai eu deux actions de contrôleur comme ceci:

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

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

J'appelle d'abord le Review Action avec Null en tant que paramètre, cela affichera une page Web avec une liste d'éléments. Les éléments sont liés à la première action de révision avec l'ensemble d'identité.

Lorsque l'identifiant aura été fourni à l'action de révision, une page Web d'édition sera retournée pour cet élément. Lorsque vous appuyez sur Soumettre après quelques modifications, nous nous retrouverons sur la deuxième action de révision (Post). Ici, l'article sera enregistré.

Tout bien jusqu'à présent.

Maintenant, dans la dernière avis Action (Post), j'ai obtenu le code suivant à la fin:

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

Cela déclenchera à nouveau la première action d'examen, le problème est qu'il fournira l'identifiant précédent? Ma pensée était que le redirectoaction ne fournira aucun paramètre?

Était-ce utile?

La solution

Ma pensée était que le redirectoaction ne fournira aucun paramètre?

Votre compréhension est erronée. Les paramètres présents dans le ModelState sont automatiquement transmis si l'URL cible contient un paramètre d'itinéraire avec le même nom. Dans ce cas, vous avez un id paramètre qui est affiché (probablement dans le cadre d'un champ de saisie ou d'une partie de l'URL) et lorsque vous redirigez vers l'action d'index d'origine, car les définitions de votre itinéraire ont un id Jeton à la fin le RedirectToAction La méthode le remplira.

En tant que solution de contournement pour éviter ce comportement, vous pouvez explicitement spécifier que le id Le paramètre ne doit pas être envoyé lors de la redirection:

return RedirectToAction("Index", "Ad", new { id = "" });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top