IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

MVC Razor / Textbox dynamiques


Sujet :

ASP.NET MVC

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 67
    Points : 97
    Points
    97
    Par défaut MVC Razor / Textbox dynamiques
    Bonjour,

    Voici le modèle (simplifié l'extrême)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	public class UserFieldModel
    		{
    		public string Code { get; set; }  // Identifiant du champ libre
    		public string Title { get; set; }  // Entête du champ
    		public string Value { get; set; }  // Valeur 
    		}
     
             public class CreateViewModel
    		{
    		public UserFieldModel[] UserFields { get; set; }
                    }
    Le contrôleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public ActionResult Create()
    		{
    		var rvm = new CreateViewModel();
    		rvm.UserFields = Service.GetInfosData<UserFieldModel>().ToArray();
    		return View(rvm);
    		}
    La méthode GetInfosData me retourne une liste qu'il faut afficher à l'écran ..

    La vue :
    Là aussi, simplifiée au maximum pour des questions de lisibilité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    @model CreateViewModel
    ...
       for (int i = 0; i < Model.UserFields.Count(); i++)
            {
           <div>
                        @Html.HiddenFor(x => x.UserFields[i].Value)
                        @Html.HiddenFor(x => x.UserFields[i].Code)
                        @Html.HiddenFor(x => x.UserFields[i].MaxLenght)
                        @Html.HiddenFor(x => x.UserFields[i].Title)
     
                  @Model.UserFields[i].Title
                  @Html.TextBoxFor(x => x.UserFields[i].Value})
            </div>
            }
    Et enfin le postback

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [HttpPost]
    public ActionResult Create(RequestCreateViewModel vm)
    {
     ...
    }
    vm.UserFileds contient bien le bon nombre d'éléments et toutes les propriétés sont définies SAUF la valeur de ce que j'ai saisi qui vaut toujours NULL..

    je dois rater un truc mais je ne vois pas quoi du tout....

    j'ai essayé avec une List<UserFieldModel> dans le model, c'est pareil.
    Avec un @Html.EditorFor et le template qui va derrière -> idem
    Avec des foreach des hidden de tous les côtés etc etc... toujours vide !

    Je craque

    Quelqu'un pourrait il m'éclairer sur le sujet ?

    Merci un milliard de fois d'avance !!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Dans ta vue tu as bindé deux fois "Value".
    Après quelques tests. La valeur qui est renvoyé au serveur est la première bindé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @using (Html.BeginForm("Test", "Home", FormMethod.Post))
    {
        for (int i = 0; i < Model.UserFields.Count(); i++)
        {
        <div>
     
            @Html.HiddenFor(x => x.UserFields[i].Code)
            @Html.HiddenFor(x => x.UserFields[i].Title)
     
            @Model.UserFields[i].Title
            @Html.TextBoxFor(x => x.UserFields[i].Value)
        </div>
        @Html.HiddenFor(x => x.UserFields[i].Value)
        }
     
        <input type="submit" value="Submit" />
    }
    Ici par exemple j'ai mi le HiddenFor après le TexBoxFor pour "Value" --> Coté serveur j'aurai la valeur de la TextBox dans "Value"

    Et comme ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @using (Html.BeginForm("Test", "Home", FormMethod.Post))
    {
        for (int i = 0; i < Model.UserFields.Count(); i++)
        {
        <div>
            @Html.HiddenFor(x => x.UserFields[i].Value)
            @Html.HiddenFor(x => x.UserFields[i].Code)
            @Html.HiddenFor(x => x.UserFields[i].Title)
     
            @Model.UserFields[i].Title
            @Html.TextBoxFor(x => x.UserFields[i].Value)
        </div>
     
        }
     
        <input type="submit" value="Submit" />
    }
    Ici par exemple j'ai mi le HiddenFor avant la TexBoxFor pour "Value" --> Coté serveur j'aurai la valeur "Value" qui a été envoyée à la page (null par exemple).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 67
    Points : 97
    Points
    97
    Par défaut
    Ah oui effectivement, il suffisait que je le place après, voire carrément que je le supprime...
    Ca fonctionne nickel.
    Ouf ! Merci un milliard de fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. les valeurs des textbox dynamiques
    Par casaoui dans le forum ASP.NET
    Réponses: 5
    Dernier message: 04/06/2007, 17h20
  2. [C# 2.0] Récuperer l'attribut Name d'un textbox dynamique
    Par skud dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/10/2006, 14h37
  3. Réponses: 2
    Dernier message: 25/08/2006, 14h06
  4. [VBA-E] UserForm avec textbox "Dynamique"
    Par Alex_Kidd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2006, 00h29
  5. [vb.net] définir un textbox dynamiquement
    Par arnolem dans le forum Windows Forms
    Réponses: 13
    Dernier message: 05/12/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo