Das System zu verwenden.Guid als Primärschlüssel ASP.Net MVC?
Habe ich eine Tabelle in der Datenbank, hat ein System.Guid als primärer Schlüssel. Die erforderlichen ADO.Net Entity Framework-Modell generiert wurde und die erforderlichen gespeicherten Prozeduren zugeordnet wurde.
Ich habe einen neuen controller und Hinzugefügt, die die grundlegenden erforderlichen code für das Erstellen und Bearbeiten der Daten. Jedoch, wenn der Klick auf den link zum Bearbeiten eines bestimmten Datensatzes wird der folgende Fehler generiert:
The parameters dictionary contains a null entry for parameter '[MyId]' of non-nullable type 'System.Guid' for method 'System.Web.Mvc.ActionResult Edit(System.Guid)' in '[MySite].[MyController].[SpecificController]'. To make a parameter optional its type should be either a reference type or a Nullable type.
Parameter name: parameters
Den edit-Aktion deklariert ist der controller wie folgt:
public ActionResult Edit(Guid itemId)
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(MyItem itemToModify)
{
}
Beim hinzufügen eines neuen Datensatzes die neue Guid generiert, die über eine Gespeicherte Prozedur und die Liste angezeigt, die richtige Guid. Die Url ist auch vorbei die korrekte Guid für die Bergung.
Ich kann nicht scheinen, um zu erfassen, der Punkt, an dem dies nicht, aber wie würde ich mich über eine Weitergabe-System.Guid als parameter an den Controller?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sei denn, Sie haben aktualisiert Ihre Routen, es erwartet wird (standardmäßig) der Letzte parameter in eine route mit dem Namen "id". Das ist, wenn Sie eine route wie /spezifische/Bearbeiten/5646-0767-..., es wird anzeigen der guid in der route Wert dictionary mit dem key "id" unabhängig davon, was die parameter auf Ihre Methode benannt ist. Ich würde Folgen dieser Konvention und ändern Sie die Methode definition:
Dies können Sie umgehen, indem Sie explizit die Angabe der Namen der parameter der route, aber dann Sie am Ende mit einer url, die folgendermaßen aussieht: /spezifische/Bearbeiten?itemid=5646-0767-...
Setzen Beispiel-code unten für jeden, der es brauchen kann (ich sicher haben)
Danke für die Antwort über die führte mich in die richtige Richtung