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 :

[ASP.NET MVC] Objets référencer comme nul dans ma vue en Post alors qu'il existe en Get


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut [ASP.NET MVC] Objets référencer comme nul dans ma vue en Post alors qu'il existe en Get
    Bonjour!

    J'ai un problème assez curieux. J'ai créé une méthode Delete et la vue associée. Tout ce passe bien quand j'arrive en Get dans ma vue. Par contre, une fois que je clique sur le bouton supprimer, j'obtiens une erreur de reference:
    Object reference not set to an instance of an object
    Voici le code de ma méthode Delete:

    Code C# : 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
           public ActionResult Delete(int id)
            {
                Models.Domain domain = new Models.Domain();
                var test = domain.getDomain(id);
                return View(domain.getDomain(id));
            }
     
            //
            // POST: /Domain/Edit/5
     
            [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Delete(int id, FormCollection collection)
            {
                try
                {
                    Models.Domain deleteDomain = new Models.Domain();
                    deleteDomain.DeleteDomain(id);
                    return RedirectToAction("Index", new { id = deleteDomain.getMethodFromCurrentDomain(id).met_id });
                }
                catch
                {
                    return View();
                }
            }

    Le code de ma vue Delete:
    Code C# : 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
    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    	Supprimer
    </asp:Content>
    
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    
        <h2>Supprimer</h2>
    
        <%= Html.ValidationSummary("L'édition a échouée. Veuillez essayez à nouveau.")%>
    
        <% using (Html.BeginForm()) {%>
    
            <fieldset>
                <legend>Etes-vous sur de vouloir supprimer la question suivante?</legend>
                <p>
                    <label for="dom_name"><b>Nom du domaine:</b></label>
                    <%= Html.Encode(Model.dom_name) %>
                </p>
                <p>
                    <label for="dom_name"><b>Evaluation actuelle du domaine:</b></label>
                    <%= Html.Encode(Model.dom_eval) %>
                </p>
                <p>
                    <input type="submit" value="Save" />
                </p>
            </fieldset>
    
        <% } %>
    
        <div>
            <%=Html.ActionLink("Retour aux domaines", "Index", new { id = Model.tbl_method.met_id })%>
        </div>
    
    </asp:Content>

    En rouge il s'agit de la ligne qui pose problème.

    ma méthode de suppression dans ma classe Domain:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public void DeleteDomain(int _domID)
            {
                myApp.entity().DeleteObject(myApp.getDomain(_domID));
                myApp.entity().SaveChanges();
            }

    Mon entity EF de ma base de donnée est en statique comme il suit:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    private static Models.databaseEntities db = new databaseEntities ();

    J'ai comparé un peu avec mes autres vue, Create, Edit, et je ne vois vraiment pas ce que je fais de faux : /

    Merci bien pour votre aide,

    L.

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Est-ce que mon problème n'est pas bien expliqué? Ou personne n'a une petite idée de ce qu'il s'agit?

  3. #3
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Ton Model ne serait pas égal à null? Verifie soit que ta fonction ci dessous, te renvoie bien quelque chose dans le model de ta vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return RedirectToAction("Index", new { id = deleteDomain.getMethodFromCurrentDomain(id).met_id });

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Mhhh, pas bête! Je n'avais pas pensé à vérifier dans mon contrôleur que la valeur soit bien là ^^

    Je check ça en arrivant chez moi et je te redis : )

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Alors il y a un bien un soucis à ce niveau

    En fait, j'utilise l'ORM Entity Framework. Le seul problème, c'est que quand je rajoute mes objets à mon ORM, celui-ci ne les ajoutes pas à la base de donnée, tout du moins je ne peux pas les voirs. Par contre, quand je suis en mode débugage sur mon site, les objects que j'ai ajouté sont visible à l'écran ?! Je n'y comprend donc rien du tout :s Si mes objets ne sont pas dans ma base de donnée, comment peuvent-ils se retrouver dans l'ORM uniquement? Surtout que je fais un :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    myApp.entity().SaveChanges();

    Donc forcément, quand je veux supprimer un objet qui n'existe pas, il crie puisque le morceau de code que tu as signalé retourne "null"...

  6. #6
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    C'est assez compliqué voir touffu ce que tu m'expliques là. Tu utilises quelle version d'entity framework déjà?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/06/2015, 01h28
  2. Réponses: 9
    Dernier message: 14/04/2010, 11h21
  3. Réponses: 10
    Dernier message: 03/12/2009, 21h45
  4. [ASP.NET/C#] [objet inaccessible] DetailsView dans un repeater
    Par darkendorf dans le forum Visual Studio
    Réponses: 2
    Dernier message: 29/01/2009, 09h49

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