-1

Je travaille sur un exemple d'application où j'ai un registre et des actions de détail. Je souhaite rediriger vers la vue détaillée après avoir enregistré une nouvelle équipe.MVC à rediriger avec des valeurs de route au lieu de la chaîne de requête

Mon code postal Regsiter ressemble à ceci;

[HttpPost] 
public async Task<ActionResult> Register(TeamEditorVm teamRegisterVm) 
{ 
    if (ModelState.IsValid) 
    { 
     var teamDetailVm = await Managers.TeamManager.CreateAsync(teamRegisterVm); 
     return RedirectToAction("Details", new { id = teamDetailVm.Id }); 
    } 

    return View(teamRegisterVm); 
} 

Y at-il un moyen de forcer RedirectToAction("Details", new { id = teamDetailVm.Id }); d'utiliser des valeurs de route pour l'URL comme

hxxps://test.com/team/detail/1 

au lieu d'un querystring?

hxxps://test.com/team/detail?id=1 
+3

Il va générer '../ team/details/1' si vous utilisez le routage par défaut. Montre tes définitions d'itinéraire actuelles et la signature de la méthode 'Details()' –

+0

Merci pour cette idée - J'ai une capture de tout l'itinéraire et je l'ai ajouté juste avant l'itinéraire par défaut et ça l'empêche de reconnaître ce pattern (controller/action/id). Je l'ai changé pour ajouter l'itinéraire par défaut d'abord, puis la route "attraper tout" et il a commencé à travailler. Merci! –

Répondre

0
RedirectToAction("Details", new { id = teamDetailVm.Id }); 

Cela vous redirigera à l'action Détails et si votre routage contient id comme paramètre par défaut, il vous montrera

hxxps://test.com/team/detail/1 

et non comme paramètre de requête. Je l'ai juste testé en MVC5 et ça fonctionnait pour moi. Veuillez vérifier votre itinéraire.

+0

Il s'avère que mes routes, nous sommes ajoutés sur la mauvaise commande. –