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 :

echanges entre javascript et controller


Sujet :

ASP.NET MVC

  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2014
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vend�e (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 31
    Par d�faut echanges entre javascript et controller
    bonjour,

    je suis bloqu� depuis deux jours sur un probl�me surement tr�s simple, mais je ne trouve pas de solutions.
    je pr�cise que je d�bute en web, je fais du client lourd d'habitude.

    j'ai un select dans mon application, je veux r�cup�rer la valeur s�lectionn� par l'utilisateur et l'envoyer a une m�thode de mon controleur.
    j'arrive a r�cup�rer la valeur, mais je ne trouve pas comment l'envoyer a ma m�thode.

    voila le JS :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">
        function saveLocalisation() {
            var SelectionWorkshop = $('#SelectWorkshop option:selected').val();
            var SelectionMachine = $('#SelectMachine option:selected').val();
            $.get('/CreateDtn/saveLocalisation?w=' + SelectionWorkshop + '&m=' + SelectionMachine);
        }
    </script>
    les select
    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
    @Html.Label("SelectWorkshop", "Atelier")
                <select id="SelectWorkshop" class="form-control">
                    @foreach (DTN.Models.Workshop m in Model.listWorkshop)
                    {
                        <option value=@m>@m.name</option>
                    }
                </select>
                <br />
                @Html.Label("SelectMachine","Machine / Bureau / Salle")
                <select id="SelectMachine" class="form-control">
                    @foreach (DTN.Models.Machine m in Model.listMachine)
                    {
                        <option value=@m>@m.name</option>
                    }
                </select>
    la ligne qui appele mon JS
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <input type="submit" value="Suivant" onclick="saveLocalisation" class="btn btn-large col-lg-12 col-md-12 col-sm-12 col-xs-12" />
    et enfin la methode de mon controler que je veux appeler
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            public RedirectToRouteResult saveLocalisation(Workshop w, Machine m)
            {
                if (Session["CreateDtn"] == null)
                {
                    Session["CreateDtn"] = new Dtn(DateTime.Now);
                }
                ((Dtn)Session["CreateDtn"]).Workshop = w;
                ((Dtn)Session["CreateDtn"]).Machine = m;
                return RedirectToAction("selectStep", new { step = 4 });
            }
    voila, si une ame charitable veut bien m'aider^^

  2. #2
    Membre �m�rite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par d�faut
    Ton action dans ton controller ne fonctionnera pas vu que tu passes en parametre d'url 2 string alors que ton action s'attend � r�cup�rer un workshop & une machine.
    Remplace les types d'arguments de ton action par "string" et ca devrait fonctionner...

  3. #3
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par d�faut
    J'ai l'impression que tu m�langes deux approches contradictoires : d'un c�t� dans ton JavaScript tu utilises de l'Ajax ($.get(...);) et de l'autre dans ton contr�leur tu as une approche plus classique formulaire et redirection (RedirectToAction("selectStep", new { step = 4 })). Tu devrais t'en tenir � une seule : soit tu fais une simple soumission de formulaire, avec une action post dans ton contr�leur qui redirige vers une action get si tout va bien et renvoie la m�me action en cas de probl�me ; ou un appel ajax avec une action qui renvoie un JsonResult, contenant une propri�t� donnant le succ�s et une url de redirection, utilis�e par un callback JavaScript c�t� client ($.get(...).done(function(data){if(data.success) window.location = data.url;}), ou une liste d'erreurs en cas d'�chec.

    Contr�leur dans le premier cas :
    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
    public class ProductController
    {
      [HttpGet]
      public ActionResult Add(){return View(); }
     
      [HttpPost]
      public ActionResult Add(Product product)
      {
        try{ Services.Products.Add(product); return RedirectToAction("Details", product.Id); }
        catch(Exception e) { return View(product); }
      }
     
      [HttpGet]
      public ActionResult Details(int id) { return View(Services.Products.Read(id)); }
    }
    Contr�leur dans le second cas :
    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
    public class ProductController
    {
      [HttpGet]
      public ActionResult Add(){return View(); }
     
      [HttpPost]
      public ActionResult AddAjax(Product product)
      {
        try{ Services.Products.Add(product); return Json(new {success = true, url = Url.Action("Details", product.Id)}); }
        catch(Exception e) { return Json(new {success = false, errors = e.Data["Errors"]}); }
      }
     
      [HttpGet]
      public ActionResult Details(int id) { return View(Services.Products.Read(id)); }
    }

Discussions similaires

  1. [MVVM] Echange entre deux controls
    Par dacid dans le forum Windows Presentation Foundation
    R�ponses: 1
    Dernier message: 11/12/2015, 12h20
  2. javascript du controle
    Par ridondo dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 15/11/2005, 11h45
  3. R�ponses: 2
    Dernier message: 08/08/2005, 21h30
  4. Conflit entre javascript et script ASP
    Par Mvu dans le forum ASP
    R�ponses: 2
    Dernier message: 22/02/2005, 16h28
  5. [c-linux]echange entre 2 sockets
    Par .:dev:. dans le forum D�veloppement
    R�ponses: 2
    Dernier message: 11/06/2004, 19h13

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