Je comprends que je peux utiliser @Html.HiddenFor(m => m.parameter)
et lorsque le formulaire est soumis, ce paramètre est transmis au contrôleur. Mon modèle a beaucoup de propriétés.
Existe-t-il un moyen plus rapide de transmettre le modèle entier en une fois au contrôleur ou dois-je le faire un par un à chaque fois?
Le modèle sera transmis au contrôleur dans son intégralité, mais les valeurs des propriétés qui ne sont pas liées par des champs de saisie ou masqués seront perdues.
Vous devez soit lier les propriétés du formulaire côté client, soit extraire à nouveau l'entité côté serveur.
Vous semblez demander quelque chose comme @Html.HiddenFor(m => m.Model)
, et ce n'est pas possible. Pardon
Une chose à garder à l'esprit, si vous avez des tonnes de champs cachés, vous envoyez peut-être plus de données à la vue que nécessaire. Pensez à utiliser des modèles de vue
Pour tous ceux qui regardent cela, vous pouvez faire un @ Html.EditorForModel () dans un div caché. Vous devez également utiliser @ Html.EditorFor (model => model.ObjectProperty) pour chaque propriété d'objet du modèle.
<div hidden="hidden">
@Html.EditorForModel()
@Html.EditorFor(model => model.ObjectProperty)
@Html.EditorFor(model => model.ListOfObjectsProperty)
</div>
Le modèle entier sera publié si vous utilisez un élément FORM. Vos éléments utilisant le modèle doivent évidemment être à l'intérieur de l'élément de formulaire
Vous pouvez également POST la forme vous-même dire en utilisant JQuery
Voir cet autre problème de pile pour cela: jQuery AJAX submit form
Regardez attentivement la réponse de "Alfrekjv"
Ceci est déjà intégré. Considérez ce modèle:
public class MyModel
{
public string PropertyA { get; set; }
public string parameter { get; set; }
}
et considérons maintenant cette action:
[HttpPost]
public ActionResult PostSomeData(MyModel model)
{
}
MVC utilisera la FormCollection
et complétera la classe MyModel
où elle le pourra Si vous n'avez pas la PropertyA
dans le formulaire, ce sera alors null
. Mais puisque vous avez une input
pour la propriété parameter
, elle sera renseignée.