MVC4 Rasoir - @Html.Méthode displayfor pas de liaison de modèle
Je suis en train d'essayer de me trouver de pieds avec MVC4 de Rasoir et je suis bloqué avec ce problème plus simple.
Lorsque j'utilise @Html.Méthode displayfor le modèle est toujours envoyée à NULL, mais lorsque j'utilise @Html.TextBoxFor ce modèle est entièrement rempli, ce qui me manque?
Merci d'avance
- J'ai besoin d'afficher les champs "étiquettes". C'est pourquoi, l'objectif de cette thèse est de permettre à l'utilisateur de visualiser les données avant de les soumettre à la base de données. Des idées comment je peux faire?
Vous devez vous connecter pour publier un commentaire.
C'est un problème commun que beaucoup de gens manquer dans les asp.net framework mvc. Non seulement la différence dans les aides comme
HiddenFor
,DisplayFor
,TextBoxFor
- mais comment exactement, le cadre définit automatiquement la collecte et la validation de ces intrants. La magie tout est fait avec HTML5 de données* les attributs. Vous remarquerez que lorsque l'on regarde la balise d'entrée généré, qu'il va y avoir des propriétés supplémentaires dans le formulaire dedata-val
,data-val-required
, et peut-être de propriétés de données pour les types, par exemple des nombres seraitdata-val-number
.Ces attributs de données de permettre l'extension jQuery
jquery.validate.unobtrusive.js
à analyser le DOM et ensuite décider de les champs de la valider ou de générer des messages d'erreur.La collecte effective des données publiées est réfléchie par le
name
de la propriété. C'est ce qu'il carte pour le modèle qui est dans le c# ou vb[HttpPost]
méthode.Utilisation
HiddenFor
lorsque vous souhaitez fournir posté données que l'utilisateur n'a pas besoin d'être conscient de.Utilisation
DisplayFor
lorsque vous souhaitez afficher les enregistrements, mais leur permet pas d'être editted.Utilisation
TextBoxFor
quand vous voulez pour permettre à l'utilisateur d'entrée ou de permettre à l'utilisateur de modifier un champ.MODIFIER
"the purpose of this view is to enable the user to view the data before submitting it to the database. Any ideas how I can achieve this?"
Vous pourriez faire cela avec un duo de
HiddenFor
etDisplayFor
. UtilisationHiddenFor
pour avoir les valeurs prêt à être publié, etDisplayFor
pour afficher ces valeurs.DisplayFor
ne fera pas le Modèle de liaison.TextBoxFor
va le faire parce qu'il crée uninput
élément dans le formulaire et le formulaire peut supporter quand il est posté. Si vous souhaitez obtenir certaines données dans le HttpPost action et que vous ne voulez pas utiliser le TextBoxFor, vous pouvez garder pirticulare modèle si elle dans une variable cachée à l'intérieur de la forme à l'aide de laHiddenFor
méthode d'assistance HTML comme ceci.Utiliser à la fois
DisplayFor
etHiddenFor
.DisplayFor
affiche simplement le texte et n'est pas un champ de saisie, il n'est donc pas affecté.HiddenFor
crée<input type="hidden" value="xxxx"/>
DisplayFor
construit une étiquette HTML, pas une entrée. Les étiquettes ne sont pas publiées sur le serveur, mais les entrées sont.Voulez-vous dire au cours d'un formulaire post? Si vous utilisez la méthode displayfor, ce qui crée un élément qui ne contient aucune forme de valeurs. Vous utilisez, généralement en collaboration les uns avec les autres pour créer une étiquette pour votre zone de texte, puis à l'aide de Html.TextBoxFor pour permettre aux utilisateurs de modifier l'élément de données.
Exemple:
Rendra
Ou en HTML
Je sais que c'est un peu une vieille question, mais vous pouvez rouler votre propre, personnalisée combinée de commande de l'affichage comme indiqué ci-dessous. Cela rend la valeur de modèle suivi par un champ caché pour que la valeur
Simplement utiliser ce que le cadre a déjà en place