Routage GET et POST dans les itinéraires ASP.NET MVC 4
J'essaye de configurer un formulaire de Connexion dans un ASP.NET MVC 4 app. Actuellement, j'ai configuré mon point de vue, comme indiqué ici:
RouteConfig.cs
routes.MapRoute(
"DesktopLogin",
"{controller}/account/login",
new { controller = "My", action = "Login" }
);
MyController.cs
public ActionResult Login()
{
return View("~/Views/Account/Login.cshtml");
}
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model)
{
return View("~/Views/Account/Login.cshtml");
}
Lorsque je tente de visite /compte/login dans le navigateur, j'ai un message d'erreur qui dit:
The current request for action 'Login' on controller type 'MyController' is ambiguous between the following action methods:
System.Web.Mvc.ActionResult Login() on type MyApp.Web.Controllers.MyController
System.Web.Mvc.ActionResult Login(MyApp.Web.Models.LoginModel) on type MyApp.Web.Controllers.MyController
Comment puis-je installer une forme de base en ASP.NET MVC 4? J'ai regardé l'exemple de l'Internet Application du modèle dans ASP.NET MVC 4. Cependant, je n'arrive pas à comprendre comment le routage est câblé. Je vous remercie beaucoup pour votre aide.
Qu'essayez-vous d'atteindre avec votre itinéraire personnalisé? La Whey n'avez-vous pas quitter la route par défaut à la place ({controller}/{action}/{id})? La route par défaut devrait fonctionner correctement.
Dans le cas où vous n'avez pas remarqué, son contrôleur nom est différent de son url
Qu'est-ce que le
Dans le cas où vous n'avez pas remarqué, son contrôleur nom est différent de son url
Qu'est-ce que le
[ViewSettings(Minify = true)]
pour? Je ne trouve pas de référence à cet attribut. Est-ce quelque chose que vous avez créé?OriginalL'auteur Bill Jones | 2013-01-24
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas essayé encore, mais pouvez-vous essayer d'annoter votre Login actions avec le Verbe Http - je suis en supposant que vous utilisez un
GET
pour l'affichage de la page de connexion et unPOST
pour le traitement de la connexion.En ajoutant
[HttpGet]
pour la première action et[HttpPost]
pour la deuxième, la théorie est que ASP.Net's de routage sera alors de savoir quelle méthode d'Action à l'appel en se basant sur la méthode qui a été utilisée. Votre code doit alors ressembler à ceci:Si cela ne fonctionne pas, envisager d'avoir deux voies et deux nommées différemment actions comme ci-dessous:
Il y a d'autres semblables questions et réponses sur StackOverflow déjà, jetez un oeil à: Comment OBTENIR l'itinéraire et la SUPPRIMER pour la même url et il y a aussi le ASP.Net la documentation qui peut aussi aider.
[HttpGet]
est facultative, et n'est pas nécessaire dans la plupart des cas.Vous voulez également
[AllowAnonymous]
sur les deux méthodes.OriginalL'auteur Tom Scott