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 Discussion :

.Net MVC Pb! Controller <=> textbox


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut .Net MVC Pb! Controller <=> textbox
    Bonjour à toute la communauté
    Bon voila mon problème, j 'ai une Vue qui doit afficher un DropDownList avec en ViewData une liste de données lambda. (jusqu'ici tout vas bien , Je rajoute un champs "--Create--" a celui ci. De plus, j'ai rajouter l'option onchange => submit le form.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <% using (Html.BeginForm("Index", "Experience", FormMethod.Post, new { id = "TheForm"}))
               {%>
    <%=Html.DropDownList("expId", (SelectList)ViewData["expId"], "-- Create --",
                                            new { onchange = "document.getElementById('TheForm').submit();"})%>
    Suite à ca se trouve l'ensemble des données correspondant dans des texteAreas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <label for="Sector">Sector:</label>
                    <%= Html.TextBox("Sector", ViewData["Sector"] ?? "")%>
                    <%= Html.ValidationMessage("Sector", "*") %>
    Suit un bouton Save (submit => Form)

    Donc mon sénario est que si l'utilisateur change l'index de la dropdownlist cela change les données des texteares en passant par le controlleur.
    Si il est sur "--Create--" les champs sont vide et attendant d'être remplis avant d'être sauvegarder.

    le contrôleur:
    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
    18
    19
    20
    21
    22
    23
     
     public ActionResult Index(int cvId, int? expId)
            {
                var model = new IndexModel
                                {
    ...
     ViewData["Sector"] = model.SelectExperience.Sector;
     
                    expIdSended = (int) expId;
                    AddExpToViewData((int) expId, cvId);
                    expIdSended = 0;
                }
                return View("Index",model);
            }
    [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Index(int companyId, [Bind(Exclude = "Id")] Experience expToCreate, int? ExpId) // TODO CvId a ajouter en param 
            {
                if(ExpId != expIdSended && ExpId!=null)
                {
     
                    ViewData["Sector"]=expToCreate.Sector;
                    Experience expPro = _service.GetExp((int) ExpId);
                    return Index(expPro.Cv.Id , ExpId);
    A l'appel du contrôleur via HttpVerbs.Post, je recupere bien les informations du nouveau UserID par exemple et je rappel la fonction Index afin de recharger la vue avec les bonnes données.

    Mon problème est (accrochez vous) cela marche sur des HTML.Encode (ViewData["UserName"] ou Model.User.Name) mais pas sur mes TextArea qui reste comme avant ?!?!?!
    Pourquoi? et comment résoudre ce problème.

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut
    okai okai j'étais super fatigué

    bon pour infos j ai mis un HTML.BeginFrom entre mon drop down list

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% using (Html.BeginForm("RefreshIndex", "Experience", new { CvId = Model.SelectCv.Id }, FormMethod.Post, new { id = "TheForm"}))
    avec mes paramètres qui appel le controler RefreshIndex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult RefreshIndex(int? ExpId,int CvId) 
            {
                Experience exp;
                if(ExpId!= null)
                    exp = _service.GetExp((int)ExpId);
                return Index(CvId,ExpId);
            }
    qui lui même appel le controler par defaut ("Index") qui vas a sont tour re-afficher la vue avec les nouveau ViewData["X"] correspondant.

    Désolé pour le post mais j'étais vraiment fatigué et je bloquais bêtement ...

    bref en espérant que cela sera utile a quelqu'un (hum hum hum)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2015, 14h47
  2. Réponses: 4
    Dernier message: 31/03/2010, 18h28
  3. Réponses: 10
    Dernier message: 03/12/2009, 21h45
  4. Réponses: 0
    Dernier message: 20/09/2009, 20h34

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