Frage

I Entities Framework verwenden, um meine Daten accsee Schicht in ASP.NET MVC zu implementieren. Ich habe ein Problem in Aussicht.

Wenn mein Code in der VIEW so etwas wie:

 

Ich habe einen Fehler in der Laufzeit:

Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt.

Beschreibung: Eine nicht behandelte Ausnahme während der Ausführung der aktuellen Webanfrage auf. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über den Fehler und wo es im Code verursacht.

Ausnahmedetails: System.NullReferenceException:. Objektverweis nicht auf eine Instanz eines Objekts festgelegt

Quellfehler:

Zeile 14:

Zeile 15: <% = Model.FirstName%> Zeile 16:

Zeile 17:

Dies wird erzeugt aus stark typisierte Ansicht Vorlage. Ich sorgte dafür, dass ich Modell referrence zu web.config hinzugefügt Ich habe nicht diesen Fehler auftreten, wenn ich LINQ to SQL wurde mit

Jede Hilfe?

War es hilfreich?

Lösung 2

ich es herausgefunden! Das Problem war in der VIEW Normalerweise wäre es,  mit (Html.BeginForm (neu {Id = Model.Id}))

Wenn der Primärschlüssel in der Datenbank CategoryID ist, würden Sie denken, Sie den Code anpassen sollten

Id = Model.CategoryID

Aber, tatsächlich, Sie sollten es so machen,

mit (Html.BeginForm (neu {CategoryID = Model.CategoryID}))

Ansonsten wird es nicht um das Modell füllen.

Resurge, hoffen, es hilft!

Andere Tipps

Da ich nicht auf einer Antwort Kommentar kann ich es über eine neue Antwort tun würde .. Ich bemerke, dass Ihr Attribut „Vorname“ genannt, sind Sie vielleicht versuchen, ein href zu tun <= „http://www.asp.net/learn/mvc/tutorial-26-cs.aspx“ rel = "nofollow noreferrer "> dieses Tutorial? Und dies ist die Aktion Bearbeiten Sie Probleme mit?

Da dies genau das gleiche Problem mir und 2 meiner Mitschüler haben. Hier ist eine ausführlichere Erläuterung des Problems:

Dies ist die Controller-Aktion:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Contact contactToEdit) {
    if (!ModelState.IsValid)
        return View();

    try {
        var originalContact = (from c in base._entities.ContactSet
                               where c.Id == contactToEdit.Id
                               select c).First();
        base._entities.ApplyPropertyChanges(originalContact.EntityKey.EntitySetName, contactToEdit);
        base._entities.SaveChanges();

        return RedirectToAction("Index");
    } catch(Exception e) {
        return View();
    }
}

Wenn der ApplyPropertyChanges ist ein Ausnahme rel="nofollow angehoben wird. (InvalidOperationException) Ausnahmemeldung:

  

{System.InvalidOperationException: Die Object keine Object mit einem Verweis auf ein Objekt vom Typ ‚ContactManager.Models.Contact‘ enthalten
.   bei System.Data.Objects.ObjectContext.ApplyPropertyChanges (String entitySetName, Objekt geändert)
  bei ContactManager.Controllers.HomeController.Edit (Kontakt contactToEdit) in C: \ Benutzer \ Jeroen \ Desktop \ Contactmanager \ Contactmanager \ Contactmanager \ Controllers \ HomeController.cs: Zeile 65}

Wenn ich diese Zeile vor ApplyPropertyChanges:

System.Data.Objects.ObjectStateEntry x = base._entities.ObjectStateManager.GetObjectStateEntry(originalContact);

hat x einen Eintrag des richtigen Typs enthalten. ( Debug-Bild )

Hinweis: Ich habe eine kleine Abweichung von dem Tutorial und setze die Entitäten in einem Oberklasse-Objekt, damit ich das gleiche Objekt in allen meinem Controller nicht erklären müssen. Aber das gleiche Problem tritt auf, wenn das Tutorial folgen.

Es sieht aus, als ob Ihr Modell in der Steuerung nicht richtig ausgefüllt. Es gibt nicht wirklich genug Informationen in Ihrer Frage, herauszufinden, was genau obwohl falsch läuft.

Manchmal Modell ist null, weil die select-Anweisung mit der Methode .FirstOrDefault() kein gültiges Objekt brachte.

Sie können immer .FirstOrDefault() ändern Sie Ihre Lösung .First() und neu kompilieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top