RedirectToAction reindirizza con parametri di query?
-
28-10-2019 - |
Domanda
Sto lavorando a un'applicazione ASP.NET MVC e mi sono imbattuto in una cosa strana.
Ho due azioni del controller come questa:
[CustomAuthorize(Roles = SiteRoles.Admin)]
public ActionResult Review(int? id)
[CustomAuthorize(Roles = SiteRoles.Admin)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Review(AdReview data)
Per prima cosa chiamo l'azione Review
con null come parametro, questo farà apparire una pagina web con un elenco di elementi.Gli elementi vengono ricollegati alla prima azione Review con l'ID impostato.
Quando l'ID è stato fornito all'azione di revisione, verrà restituita una pagina web di modifica per questo articolo.Quando si preme invia dopo alcune modifiche, ci ritroveremo nella seconda azione Review (post).Qui l'elemento verrà salvato.
Finora tutto bene.
Ora, nell'ultima azione Review (post) ho ricevuto il seguente codice alla fine:
return RedirectToAction("Review", "Ad");
Questo attiverà di nuovo la prima azione di revisione, il problema è che fornirà l'ID precedente?Il mio pensiero era che RedirectToAction non fornirà alcun parametro?
Soluzione
Il mio pensiero era che RedirectToAction non fornirà alcun parametro?
La tua comprensione è sbagliata.I parametri presenti nello stato del modello vengono inoltrati automaticamente se l'URL di destinazione contiene un parametro di route con lo stesso nome.In questo caso hai un parametro id
che viene pubblicato (probabilmente come parte di un campo di input o parte dell'URL) e quando reindirizzi all'azione Index originale, perché le tue definizioni di percorso hanno un token id
alla fine del RedirectToAction
il metodo lo riempirà.
Come soluzione alternativa per evitare questo comportamento, potresti specificare esplicitamente che il parametro id
non deve essere inviato durante il reindirizzamento:
return RedirectToAction("Index", "Ad", new { id = "" });