8
votes

Réponse.redirectToroute avec une action spécifiée

Je souhaite rediriger vers un itinéraire, mais spécifiez également l'action à exécuter sur le contrôleur de ce itinéraire.

J'ai essayé ceci: xxx

L'action ressemble à ceci: xxx

L'itinéraire ressemble à ceci: xxx

L'erreur que je reçois est:

système .NotimplementedException: la méthode ou l'opération n'est pas implémentée.

Pouvez-vous voir ce que je fais mal?


1 commentaires

C'est un Bug dans MVC3. @ La solution d'Ajay_whiz a travaillé pour moi.


3 Réponses :


0
votes

Eh bien, vous obtenez uniquement notimplementaedException quand quelque chose le jette. Alors regardez la trace de la pile (pile d'appels) et trouvez la routine qui l'a jeté. Lorsque VS implémente automatiquement une interface, par exemple, le corps jettera ceci; Vous êtes censé remplacer la mise en œuvre.


5 commentaires

Ceci est le haut de la pile: à System.web.httpresponsebase.redirectToroute (chaîne routename, objet routévalues) sur mvcapp.controls.logincontroller.ecteur de chaîne, mot de passe de chaîne) dans c: \ dev \ aspenmvctemplate \ src \ main MVCAPP \ MVCApp \ Controlers \ l ogincontroller.cs: LI NE 110


Non, RedirectToroute ne jettera pas ceci. Mais la chose que redirecttoroute provoque finalement être appelée (par exemple, une fonction appelée par votre action). Essayez d'examiner une pile sur n'importe quel InnerException vous pourriez avoir.


Je ne crois pas que l'action est jamais appelée parce que je peux aller manuellement l'URL pour l'action et son amende. Je pense que le problème est avec mon appel à RedirectToroute (). Je pense que cela ne trouve pas l'itinéraire ou quelque chose. Je ne comprends tout simplement pas pourquoi. L'action elle-même fonctionne parfaite. Le resseredirect est où je suis confus.


RedirectToroute ne jette pas (directement) aucune exception du tout. Je viens de regarder dans le code source MVC pour confirmer ceci. Une autre fonction lance cette exception.


@qntmfred Oui, il fait un cas assez convaincant qui est un bug.



9
votes

Moi aussi j'ai eu du mal avec ça. J'ai fait ceci xxx


8 commentaires

Toute façon d'accéder à cette méthode pas dans un contrôleur?


@Shimmy où voulez-vous y accéder?


Application_Error . Il est évidemment possible de créer une nouvelle instance, question si une instance statique existe n'importe où.


Vous pouvez utiliser urlhelper.generérerr () méthode. Pour obtenir demandeContext, vous pouvez écrire ((mvchandler) httpcontext.current.handler) .RequestContext


Ouais, mais je veux utiliser nouveau {} pour définir les itinéraires.


Que diriez-vous de créer une nouvelle instance de urlhelper en passant le requierContext dans son constructeur et utilisez la méthode de la route


C'est ce que j'ai fait ... merci!


Les hommes que vous enregistrez ma journée (y)



-1
votes
return Redirect(Url.RouteUrl(new { controller = "Controller", action = "Action" }));

1 commentaires

Cette réponse est une duplication exacte de Ceci un, qui a été publié précédemment.