/ / Publier des valeurs non modifiables - c #, asp.net-mvc, asp.net-mvc-3

Publier des valeurs non modifiables - c #, asp.net-mvc, asp.net-mvc-3

J'ai une vue et un modèle (disons voiture). Un champ est modifiable dans le formulaire (l'autre information est uniquement affichée). Lorsque le formulaire de vue est posté, il me faut toutes les informations, pas seulement la propriété modifiable. Mais toutes les autres propriétés sont nulles.

J'avais l'habitude de créer des champs cachés pour poster les données, mais lorsque vous avez plus de champs cachés que de champs non cachés, cela crée un code vraiment sale.

Existe-t-il un moyen de publier toutes les propriétés d'un modèle sans utiliser de champs cachés?

Réponses:

5 pour la réponse № 1

Vous devez utiliser un ViewModel avec les champs modifiables uniquement. Dans la vue, placez simplement l'ID du modèle dans la base de données en tant que champ masqué.

Dans votre contrôleur, obtenez le modèle de la base de données. Ensuite, vérifiez si vous pouvez réellement modifier cet élément (quelqu'un pourrait changer l'identifiant dans un champ caché en utilisant Firebug par exemple).

Ensuite, mettez à jour le modèle de base de données avec les champs de votre ViewModel ... et enregistrez le modèle dans la base de données à nouveau.

Si vous utilisez votre modèle de voiture dans la vue, quelqu'unpourrait changer plus de champs que ce que vous avez permis ... Si vous utilisez CarViewModel, il est impossible, car le classeur de modèle ne fait que lier les propriétés du modèle de vue.


2 pour la réponse № 2

Les données postées sous forme html correspondent au contenu des entrées. Je ne pense pas qu’il y ait un problème à avoir des champs cachés si vous avez besoin de ces données sur le post, c’est à quoi servent les champs cachés.

Cela étant dit, si vous voulez vraiment réduire le nombre de champs cachés, vous pouvez "sérialiser" toutes ces informations dans un champ, puis les "désérialiser" dans la publication. Ou dans un classeur de modèle personnalisé.

Mais si vous voulez que la magie de ModelBinder soit prête à l'emploi dans Asp.Net MVC, vous devez utiliser des champs de formulaire.


-1 pour la réponse № 3

Si vous souhaitez que les informations soient affichées dans des champs cachés, une autre option serait de les inclure dans la chaîne de requête.