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 :

Charger un formulaire vers une vue et l'editer


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Charger un formulaire vers une vue et l'editer
    Hello,

    J'ajoute le tag débutant mais je ne suis pas sur sorry (je pense que mon problème est purement lié au code ajax qui est d'un niveau débutant).

    EDIT// J'ai résolu le stress avec la méthode POST en utilisant (contournant mon problème) un Html.BeginForm, j'ai sérialisé cette form et cette fois-ci mon controlleur réceptionne bien les données! Il ne me reste plus que le problème d'afficher les infos dans mon code avec mon Get du coup!

    Voici l'objectif final de ce code:

    -Charger un formulaire dont les données viennent d'une DB externe et ensuite les modifier.

    Pour cela, j'ai une méthode Get GetMember() qui selon l'id du membre (pour l'id j'utilise une session), va chercher ses données dans la db externe et ensuite les passe à la vue.
    J'ai du coup également une méthode POST GetMember() qui reçoit un modèle appelé Member et qui crée un nouveau record dans ma DB externe (la modification doit d'abord être approuvée, d'où la création d'un nouveau record dans une table temporaire).

    Mes problèmes sont (je pense) les suivants:

    -Dans ma méthode Get, je n'arrive pas à réceptionner correctement mon résultat dans ma vue.
    En effet, ma méthode se connecte bien à la DB, elle récupère les bonnes informations et retourne View(results), mais une fois dans le code ajax, une erreur 500 se produit... cela fait pas mal de temps que je bloque dessus et je ne trouve pas de solution..

    -Dans ma méthode Post, mon appel ajax fonctionne vers ma méthode, mon soucis est que les valeurs des variables du modèle qui est en paramètre sont vides... J'ai pourtant vérifié via le débogueur Chrome et la variable "myFormdata" est bien remplie.
    Néanmoins, le reste fonctionne et il va bien me créer un nouveau record dans ma DB Filemaker (même si les champs sont vides).

    Petite précision, j'utilise .NET core.
    J'ai hésité à plutôt poster mon topic dans la partie ajax, mais je me suis dit que c'était plus orienté .NET qu'ajax

    Me voici donc actuellement bloqué!

    Auriez-vous une solution?

    Voici le code:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
            [HttpGet]
            public async Task<IActionResult> GetMember()
            {
                try
                {
                    ViewBag.sessionv = HttpContext.Session.GetInt32("idMember");
                    if(ViewBag.sessionv == null)
                    {
                        return RedirectToAction("Index", "Home");
                    }
     
                    FileMakerRestClient client = new FileMakerRestClient("https://fms171.hostmy.solutions", "helloJAK", userName, password);
                var toFind = new Models.Members { Zkp_WEB = ViewBag.sessionv };
                var results = await client.FindAsync(toFind);
                    Console.WriteLine(results);    
                    bool isEmpty = !results.Any();
                    if (isEmpty)
                    {
                        return NotFound();
                    }
                    Console.WriteLine(results);
                    return View(results);
                }
                catch
                {
                    return BadRequest();
                }
            }
     
     
            [HttpPost]
            public async Task<IActionResult> GetMember(Models.Members model)
            {
                ViewBag.sessionv = HttpContext.Session.GetInt32("idMember");
                if (ViewBag.sessionv == null)
                {
                    return RedirectToAction("Index", "Home");
                }
     
                if (ModelState.IsValid)
                {
                    FileMakerRestClient client = new FileMakerRestClient("https://fms171.hostmy.solutions", "helloJAK", userName, password);
                    var toCreate = new Models.Members { NameFirst = model.NameFirst, NameLast = model.NameLast, Politeness = model.Politeness };
                    var results = await client.CreateAsync(toCreate);
     
                    return Ok();
                }
                else return BadRequest();
            }
    Classe(modèle) Member:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Members
        {
            [DataMember(Name = "nameFirst")] // the filemaker field to use
            public string NameFirst { get; set; }
     
            [DataMember(Name = "nameLast")] // the filemaker field to use
            public string NameLast { get; set; }
     
            [DataMember(Name = "politeness")] // the filemaker field to use
            public string Politeness { get; set; }
     
            [DataMember(Name = "zkp_WEB")] // the filemaker field to use
            public int Zkp_WEB { get; set; }
    }
    Vue:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    @model jak.formulaire.Models.Members
     
    <div id="myForm">
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Politeness, "Politeness", htmlAttributes: new { @class = "control-label col-md-4" })
            @Html.EditorFor(model => model.Politeness, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter politeness", @id = "Politeness" } })
            <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
        </div>
        @Html.ValidationMessageFor(model => model.Politeness, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.NameFirst, "First name", htmlAttributes: new { @class = "control-label col-md-4" })
            @Html.EditorFor(model => model.NameFirst, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter first name", @id = "NameFirst" } })
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.NameLast, "Last name", htmlAttributes: new { @class = "control-label col-md-4" })
            @Html.EditorFor(model => model.NameLast, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter last name", @id = "NameLast" } })
        </div>
        <br /><br />
        <button type="submit" class="btn btn-primary" id="btnEdit">Submit</button>
    </div>
     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    @section Scripts{
        <script type="text/javascript">
     
            $(document).ready(function () {
                GetMember();
                Edit();
     
            });
     
            function GetMember() {
     
                $.ajax({
                    type: "GET",
                    url: "https://localhost:44338/Members/GetMember/",
                    dataType: "json"
                });
            }
     
            function Edit() {
     
                $('#btnEdit').on('click', function () {
     
                    var firstname = $("#NameFirst").val();
                    var lastname = $("#NameLast").val();
                    var politeness = $("#Politeness").val();
                    var myFormdata = { Politeness: politeness, NameFirst: firstname, NameLast: lastname };
     
                    $.ajax({
                        type: "POST",
                        contentType: "application/json",
                        url: "https://localhost:44338/Members/GetMember/",
                        data: JSON.stringify(myFormdata),
                        success: function (data) {
                            if (data === "success") {
                                alert("Member successfully modified");
                            }
                        },
                        error: function (data) {
                            alert('An error occurs during the process of your request');
                        }
                    });
                });
            }
        </script>
    }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    Si les données que tu veux afficher son indépendante de ton model de la vue, moi j'envoie le tout soit dans une variable Session("xxx") ou dans un viewbag.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    En fait les données que je récupère doivent aller dans mon modèle Members.
    Je me demande si je ne devrais pas créer une liste de <Members> et y ajouter results étant donné que results est un IEnumerable<Members>?
    (J'ai essayé mais je n'y suis pas parvenu.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    J'ai changé le modèle de ma vue par: @model IEnumerable<Members>
    Il ne me reste plus qu'à réussir à récupérer les données dans le @Html.EditorFor mais actuellement il ne les trouve pas... par exemple: (model => model.Member_Politeness) est inconnu...

    Une idée?

    EDIT/ J'ai également fait un foreach:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        @foreach(var item in Model)
        {
            @Html.LabelFor(x => item.Company_Country)
            @Html.EditorFor(x => item.Company_Country)
        }
    Sauf que du coup j'ai une erreur "NullReferenceException: Object reference not set to an instance of an object."
    Il n'essaye même pas d'entrer dans la méthode de mon contrôleur, il plante avant...

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/10/2007, 12h54
  2. [Spring MVC] Renvoyer vers une vue depuis un intercepteur
    Par ChtiGeeX dans le forum Spring Web
    Réponses: 2
    Dernier message: 01/04/2007, 10h26
  3. Converstion de caractères d'un formulaire vers une BD MYSQL
    Par gaet_045 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/06/2006, 22h32
  4. Réponses: 3
    Dernier message: 06/06/2006, 15h37
  5. [PDE]Rediriger la sortie d'un thread vers une vue Eclipse
    Par Niko31 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/01/2006, 17h31

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