RedirectToPage("Companies")
redirigera vers /Pages/Companies.cshtml
(à partir d'un contrôleur ASP.NET MVC)
Mais que faire si vous voulez rediriger vers cette page /Areas/MyArea/Pages/Companies.cshtml
?
Tous ceux-là et bien d'autres ne fonctionnent pas:
RedirectToPage("/MyArea/Companies.cshtml")
RedirectToPage("MyArea/Companies.cshtml")
RedirectToPage("./MyArea/Companies.cshtml")
RedirectToPage("/MyArea/Companies")
RedirectToPage("MyArea/Companies")
RedirectToPage("./MyArea/Companies")
Parfois, j'obtiens l'erreur "Page non trouvée". Parfois, obtenez "Spécifiez un chemin relatif racine avec un '/' en tête pour générer une URL en dehors d'une page Razor". Il n'y a pas de dossier Pages
. Je sais que tout cela peut changer à nouveau toutes les règles.
P.S. Pages Razor configurées avec .SetCompatibilityVersion (CompatibilityVersion.Version_2_1); aucun routage spécifique ajouté.
Utilisez le surcharge de RedirectToPage qui prend un objet représentant RouteValues :
return RedirectToPage("/Companies", new { area = "MyArea" });
Notez que le '/'
est requis si vous utilisez RedirectToPage
dans un contrôleur (ou n'importe où en dehors d'une page Razor). Sinon, il n'est pas nécessaire (mais fonctionnera toujours).
Cela fonctionne pour moi:
return RedirectToPage("/Companies", new { area = "MyArea" });
Fonctionne sous plain .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
aucun routage spécifique configuré.
Je pense que ce sera une question populaire ... Merci à Mike Bring, il me montre un chemin.
P.S. Si vous avez un dossier Pages - toutes les règles seront modifiées une fois de plus. C'est ainsi que "Razor Pages" essaient de s'épuiser de "MVC magic"