post et get avec la même signature de la méthode
Dans mon contrôleur, j'ai deux actions-disant "Amis". Celui qui exécute dépend de si oui ou non c'est un "get" et d'un "post".
Donc mon fragments de code à ressembler à quelque chose comme ceci:
//Get:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Friends()
{
//do some stuff
return View();
}
//Post:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Friends()
{
//do some stuff
return View();
}
Toutefois, cela ne compile pas car j'ai deux méthodes avec la même signature (Amis). Comment dois-je aller sur la création de ce? Dois-je créer une action mais la différence entre un "get" et "post" à l'intérieur de celui-ci? Si oui, comment dois-je faire?
Vous devez vous connecter pour publier un commentaire.
Renommer la deuxième méthode pour autre chose comme "Friends_Post" et puis, vous pouvez ajouter
[ActionName("Friends")]
attribut à la seconde. De sorte que la demande à l'Ami d'action avec des POST comme le type de la demande, seront traitées par cette action.[AcceptVerbs(HttpVerbs.Get)]
peut être raccourcie à[HttpGet]
, il en va de même pour les autres méthodes RESTSi vous souhaitez uniquement une routine pour gérer les deux verbes, essayez ceci:
Un potentiel de garde: je suis en utilisant MVC release 2. Vous ne savez pas si cela a été pris en charge dans MVC 1. L'Intellisense de la documentation pour AcceptVerbs devrait vous laisser savoir.
Essayez d'utiliser:
pas entièrement sûr si c'est la bonne façon, mais je voudrais utiliser un sens paramètre de différencier les sigs. comme:
Je sais c'est moche et hackish, mais il fonctionne.
Marquage cagdas " de la réponse que la réponse puisqu'il a répondu à ma question. Cependant, depuis que je n'aime pas utiliser les ActionName attribut dans mon projet, j'ai utiliser une autre solution. J'ai simplement ajouté le FormCollection pour le "post" action (ce qui change la signature de la méthode)
ajouter à la méthode Post, les paramètres d'souhaitez recevoir par la poste. peut-être comme ceci:
..ou si vous avez un type complexe, comme ceci:
Edit: Il serait préférable d'utiliser un plus tapé approche de recevoir les articles publiés, comme ci-dessus.
De vos méthodes d'action ne peut pas être fait la même chose, sinon il n'y aurait pas besoin d'écrire deux méthodes d'action. Donc, si la sémantique est différent, pourquoi ne pas utiliser des noms différents pour les méthodes d'action ainsi?
Par exemple, si vous avez eu un "supprimer" méthode d'action et OBTENIR seulement demande confirmation, vous pouvez appeler la méthode GET "ConfirmDelete" et la méthode POST juste "Supprimer".
Pas sûr si cela correspond à votre scénario, mais il a toujours fait pour moi quand j'ai eu le même problème.