ID als Bestandteil der URL beim Aufruf einer Controller-Methode liefert Fehler „Das Parameterwörterbuch enthält einen NULL-Eintrag“

Wenn in Ihrer ASP.NET MVC-Anwendung der Benutzer eine URL aufruft, die eine ID enthält (z.B. den Primärschlüssel eines zu lesenden Datensatzes), dann muss die Controller-Methode diese ID als Parameter entgegen nehmen können.

Beispielsweise soll folgende URL aufgerufen werden:

http://localhost:19011/Wohnungen/Bearbeiten/2

Dann wird der URL-Bestandteil Wohnungen durch die Controller-Klasse umgesetzt, d.h. es muss in Ihrem Projekt unterhalb von Controllers eine Klasse WohnungenController geben. Der Bestandteil Bearbeiten wird durch eine Operation dieser Klasse umgesetzt, d.h. es muss innerhalb Ihrer Klasse eine Funktion mit dem Namen Bearbeiten geben.

Beispiel:

Controller und Operationen in ASP.NET MVC

Der letzte Bestandteil, die Zahl 2 wird auf einen Parameter Ihrer Function abgebildet. Und jetzt kommt’s (Trommelwirbel): Aber nur dann, wenn dieser Parameter ID heißt! Er darf nicht ObjektID, IdPk, pId oder sonst irgendwie heißen. Nur: ID, ID, ID, ID! 🙂

Achten Sie im Beispiel auf den Parameter der Funktion:

' Eine Wohnung mit der ausgewählten ID zur Bearbeitung anbieten
' Der Parameter muss immer ID heißen, wenn er z.B. über /Wohnungen/Bearbeiten/2 aufgerufen wird
<HttpGet>
Function Bearbeiten(ID As Integer) As ActionResult
' Deklaration
Dim Wo As Wohnung
Dim WoEntity As WohnungEntity

' Anhang der ID den Datensatz in der Tabelle finden
' und als Objekt der Entity-Klasse erhalten
WoEntity = db.tblWohnungen.Find(ID)

' Umwandeln in ein Objekt der Model-Klasse
Wo = New Wohnung(WoEntity)

Return View(Wo)
End Function

Ja, Sie haben die Namenskonvention für Parameter in Operationen in meinen Lehrveranstaltungen anders gelernt und wollen sie natürlich auch hier anwenden. Das verstehe ich gut und bin stolz auf Sie! 🙂 Aber an dieser Stelle müssen wir alle eine Ausnahme machen.

Dann klappts auch mit der ID. Das wars auch auch schon.

Weiterhin viel Spaß mit ASP.NET MVC!

Übrigens: Wenn nicht, erhalten Sie eine Fehlermeldung, die sich nicht debuggen lässt, weil das Problem außerhalb Ihres Quellcodes liegt. Der Fehler sieht dann etwa so aus:

asp-net-id-parameterwoerterbuch

Serverfehler in der Anwendung /.

Das Parameterwörterbuch enthält einen NULL-Eintrag für den Parameter "Objektnummer" des Typs "System.Int32", der NULL nicht zulässt, für die Methode "System.Web.Mvc.ActionResult Bearbeiten(Int32)" in "HausverwaltungWeb.WohnungenController". Optionale Parameter müssen Verweistypen oder Typen sein, die NULL zulassen, oder als optionale Parameter deklariert werden.
Parametername: parameters
[...]

Schreibe einen Kommentar