Actions de formulaire ASP.NET MVC pour les itinéraires de service

Je travaille sur une application ASP.NET MVC. J'utilise seulement la règle de routage par défaut. J'ai un certain nombre de vues qui rendent les formulaires en utilisant un code comme celui-ci:

@using (Html.BeginForm("ForgotPassword", "Register", FormMethod.Post))

Cela a bien fonctionné. L'action de formulaire publierait dans /myapp/register/Forgotpassword et tout fonctionnerait bien.

Il faut maintenant ajouter des points de terminaison de service dans la même application. J'ai donc ajouté de nouvelles routes au-dessus de celle par défaut. La configuration du routage ressemble maintenant à:

//New rule
RouteTable.Routes.Add(
    new ServiceRoute(
    "api/user", new MyCustomerServiceHostFactory(),
    typeof(UserWebservice)));

//Default rule
routes.MapRoute(
    "Default",//Route name
    "{controller}/{action}/{id}",//URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }//Parameter defaults
  );

Après avoir ajouté la nouvelle règle, tous mes formulaires se sont cassés. En inspectant le code HTML, je constate que l’action de formulaire est /myapp/api/user? Action = mot_de_passe oublié & controller = Register ', ce qui est totalement faux.

Ma question est donc la suivante: comment acheminer le nouveau service sans casser tous mes formulaires existants?

Et pour les points bonus: que diable se passe-t-il ici?

1
avez-vous essayé de modifier l'ordre de vos mappages, mettez par défaut au-dessus du service un.
ajouté l'auteur Emmanuel N, source

1 Réponses

essayez d'utiliser comme ci-dessous,

//New rule
RouteTable.Routes.Add(
    new ServiceRoute(
    "UserWebservice", new MyCustomerServiceHostFactory(),
    typeof(UserWebservice)));

//Default rule
routes.MapRoute(
    "Default",//Route name
    "{controller}/{action}/{id}",//URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }//Parameter defaults
  );

Je pense que changer le code pour route ajouter comme Référence le lien devrait fonctionner.  Consultez également ce blog pour créer Service dynamique itinéraires .

0
ajouté
L'itinéraire dans l'exemple de code n'a pas fonctionné. Cependant, la route de service dynamique à laquelle vous avez lié a fait l'affaire. Merci!
ajouté l'auteur Brian Reischl, source