Rediriger vers l'URL dans ASP CORE
J'ai un problème avec la redirection vers un autre contrôleur et l'action dans l'application.
Mon Action de Redirection ressembler à:
public IActionResult Redirect(NotificationItemViewModel model)
{
NotificationItemToggleReadCommand command = new NotificationItemToggleReadCommand();
command.Id = new EntityId(model.Id);
command.MarkAsRead = true;
var result = CommandProcessor.Run(command);
RedirectResult redirectResult = new RedirectResult(model.Subject.Url,true);
return redirectResult;
}
Mon modèle.Sujet.L'Url est par exemple dans ce format : Identity/User#/Details/b868b08c-b3ba-4f45-a7b6-deb02440d42f
La zone/controller/action/id.
Le problème est que mon RedirectResult me diriger vers:
notifications/Identity/User#/Details/b868b08c-b3ba-4f45-a7b6-deb02440d42f
et que la route n'existe pas (contrôleur/surface/controller/action/id)
Comment pouvez forcer cette redirection pour couper la première de ce contrôleur nom?
Mon parcours:
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action=Index}/{id?}");
routes.MapRoute(
name: "controllerActionRoute",
template: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" },
constraints: null,
dataTokens: new { NameSpace = "default" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
Merci pour l'aide.
Vous devez vous connecter pour publier un commentaire.
Si je comprends votre problème correctement alors c'est parce que vous êtes sur la Notification de la zone ( le domaine) et essayez de déplacer en dehors de cette zone.
Pour que vous pouvez le faire soit de la chose suivante.
Au lieu de fournir une url relative , veuillez fournir l'url absolue dans RedirectResult. Maintenant problème c'est que lorsque l'application d'incendie de redirection d'envisager une url relative, et qui est le problème.
Deuxième solution est d'utiliser RedirectToActionResult au lieu de RedirectResult.
Ci-dessus, je suppose que le nom de la zone est "l'Identité" et le nom du Contrôleur est "Utilisateur" et l'action est "Détails". Acition a un paramètre avec le nom "Id". Vous pouvez modifier selon vos besoins. En cela, vous n'avez pas à construire l'url absolue.
Mise à jour de 1
Si je suppose que vous devez toujours faire de racine et d'ignorer les "notifications" au début.
Au moins vous pouvez fournir des Url comme ceci.