Les réponses sont très bonnes mais il existe une autre méthode dans la dernière version de MVC et de .NET que j'aime vraiment utiliser, au lieu de la "vieille école" FormCollection et des clés de requête.
Considérons un extrait HTML contenu dans une balise de formulaire qui effectue un AJAX ou un FORM POST.
<input type="hidden" name="TrackingID"
<input type="text" name="FirstName" id"firstnametext" />
<input type="checkbox" name="IsLegal" value="Do you accept terms and conditions?" />
Votre contrôleur analysera les données du formulaire et essaiera de vous les fournir en tant que paramètres du type défini. J'ai inclus la case à cocher car elle est délicate. Elle renvoie le texte "on" si elle est cochée et null si elle ne l'est pas. L'exigence cependant est que ces variables définies DOIVENT exister (à moins qu'elles ne puissent être nulles), sinon le retour AJAX ou POST échouera.
[HttpPost]
public ActionResult PostBack(int TrackingID, string FirstName, string IsLegal){
MyData.SaveRequest(TrackingID,FirstName, IsLegal == null ? false : true);
}
Vous pouvez également renvoyer un modèle sans utiliser d'aide au rasage. J'ai constaté que cela est parfois nécessaire.
public Class MyModel
{
public int HouseNumber { get; set; }
public string StreetAddress { get; set; }
}
Le balisage HTML sera simplement ...
<input type="text" name="MyModel.HouseNumber" id="whateverid" >
et votre contrôleur vous demandera le modèle.
[HttpPost]
public ActionResult PostBack(MyModel postBack){
postBack.HouseNumber; //The value user entered
postBack.StreetAddress; //the default value of NULL.
}
Lorsqu'un contrôleur attend un modèle, il n'est pas nécessaire de définir TOUS les champs car l'analyseur syntaxique les laissera par défaut, généralement NULL. Ce qui est bien, c'est que vous pouvez mélanger plusieurs modèles dans le balisage et l'analyseur de retour remplira autant de champs que possible. Il n'est pas nécessaire de définir un modèle sur la page ou d'utiliser des aides.
Il est toutefois recommandé d'utiliser un seul modèle ou un seul viewmodel par page. Le mélange et l'assortiment comme proposé est une mauvaise pratique, mais il démontre la puissance du tout nouveau moteur. Ainsi, si vous avez besoin d'ajouter quelque chose d'arbitraire ou de remplacer une autre valeur d'une aide Razor, ou si vous n'avez tout simplement pas envie de créer vos propres aides, vous pouvez rapidement utiliser ces méthodes pour accepter des données supplémentaires.