Vă mulțumim pentru susținere

Cum să RedirectToAction în MVC ASP.NET fără a pierde datele de solicitare

Folosind MVC ASP.NET există situații (cum ar fi trimiterea formularelor) care pot necesita un RedirectToAction .

O astfel de situație este atunci când întâmpinați erori de validare după trimiterea formularului și trebuie să redirecționați înapoi la formular, dar doriți ca adresa URL să reflecte adresa URL a formularului, nu pagina de acțiune la care acesta trimite.

Pentru a permite utilizatorilor să transmită datele prin codul RedirectToAction () , trebuie să conțin formularul inițial POST ? Dacă folosesc parametrul viewData, parametrii mei POST vor fi modificați la parametrii GET .

0
adăugat editat
De ce nu întoarceți aceeași vizualizare dacă există o eroare? RedirectToAction este numit de obicei dacă modelul este valabil - sau îmi lipsește ceva ?!
adăugat autor niico
Iată o întrebare care este similară (pe același subiect), dar diferită de aceasta. Oricum, poate fi interesat de cei interesați de această întrebare: http://stackoverflow.com/questions/129335/how-do-you-redirec‌ ttoaction-folosind-post & zwnj, -intead-of-get
adăugat autor Chris Pietschmann

1 răspunsuri

Soluția este de a utiliza proprietatea TempData pentru a stoca componentele de solicitare dorite.

De exemplu:

public ActionResult Send()
{
    TempData["form"] = Request.Form;
    return this.RedirectToAction(a => a.Form());
}

Apoi, în acțiunea "Form" puteți merge:

public ActionResult Form()
{
    /* Declare viewData etc. */

    if (TempData["form"] != null)
    {
        /* Cast TempData["form"] to 
        System.Collections.Specialized.NameValueCollection 
        and use it */
    }

    return View("Form", viewData);
}
0
adăugat