2013-07-05 3 views
0

En dépit d'une tonne de questions similaires à celui-ci, aucun ne semble pertinent, sid'action n'a pas été trouvé sur le contrôleur

J'ai une action avec cette signature

[HttpPost] 
public ActionResult SaveOrder(PizzaOrder pizza, Guid? id){ 
    ... 
} 

Je suis en train de soumettre un formulaire avec un bouton. J'ai vérifié que le bouton envoie un POST à ​​

https://my/controller/url/SaveOrder?id=... 

Il semble également que les données PizzaOrder sont affichées correctement.

Mais, mon action ne se fait jamais toucher. Au lieu de cela, MVC émet une exception

A public action method 'SaveOrder' was not found on controller 
'Controllers.PizzaController'. 

Pourquoi?

+0

vous pouvez poster votre point de vue avec le ActionLink/submitButton? – Thousand

+0

S'il vous plaît montrer l'URL réelle. – alexn

+1

Ne devrait-il pas être public ActionResult SaveOrder (Guid? Id), vérifiez vos routes –

Répondre

2

Il ne peut y avoir qu'une seule cause et c'est exactement ce que cela veut dire. L'URL est fausse. Pour tester cela, utilisez les outils de développement du navigateur et vérifiez l'URL de la page et l'URL réelle. Contrôleur vs PizzaController? ou .... vous faites un GET à un POST. POST n'a pas SaveOrder? Id =.

2

Le POST n'envoie pas de données dans la chaîne de requête d'URL.

+0

Et, il ne frappera pas la méthode si elle ne peut pas identifier que c'est la bonne - il doit y avoir une "pizza" (avec des champs liés de manière appropriée) dans le formulaire. – GalacticCowboy

1

La demande que vous essayez est pas GET POST comme vous le passage de paramètres avec Querystring? Id = ... Essayez après la suppression [HttpPost] attribut

+0

y a-t-il un écho ici? – Greg

+0

Semble être, mais cela change la réponse comme la suppression d'attribut peut résoudre le problème ... :) –

Questions connexes