Le dictionnaire de paramètres contient une entrée null pour le paramètre 'id' du type non-nullable 'System.Int32'
Je fais construire Ma première application MVC, j'ai une table dans la base de données contenant 3 colonnes:
- Id → clé primaire
- Nom d'utilisateur
- mot de passe
Quand je suis en cliquant sur le lien modifier modifier un enregistrement, son lancement exception suivante:
Le dictionnaire de paramètres contient une valeur null pour le paramètre " id "de la non-type nullable "Système".Int32 "pour la méthode" du Système.Web.Mvc.ActionResult Modifier(Int32)' dans 'MvcApplication1.Les contrôleurs.UserController'. Un paramètre facultatif doit être un type de référence, un type nullable, ou être déclaré comme un paramètre facultatif.
Nom du paramètre: paramètres
Voici mon code de modification:
public ActionResult Edit(int id, User collection)
{
UserDBMLDataContext db = new UserDBMLDataContext();
var q = from abc in db.User_Login_Details
where abc.Id == id
select abc;
IList lst = q.ToList();
User_Login_Details userLook = (User_Login_Details)lst[0];
userLook.Username = collection.UserName;
userLook.Password = collection.Password;
db.SubmitChanges();
return RedirectToAction("Index");
}
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous attendez un
id
paramètre dans l'URL, mais vous n'êtes pas fournir une. Tels que:dans votre
WebApiConfig
>>Register ()
Vous devez changer à
Ici la
routeTemplate
est ajouté avec{action}
Cette erreur signifie que le framework MVC ne pouvez pas trouver une valeur pour votre
id
propriété que vous transmettez en tant qu'argument à laEdit
méthode.MVC recherches de ces valeurs dans des endroits comme vos données d'itinéraire, de chaîne de requête et les valeurs d'un formulaire.
Par exemple, la suite passer le
id
propriété dans votre chaîne de requête:Une meilleure façon serait de modifier votre configuration du routage de sorte que vous pouvez passer cette valeur comme une partie de l'URL elle-même:
Ce processus où MVC recherches pour les valeurs de vos paramètres est appelé Modèle de Liaison et c'est l'une des meilleures caractéristiques de la MVC. Vous pouvez trouver plus d'informations sur la Liaison de Modèle ici.
Est la méthode de l'action sur votre formulaire pointant vers
/controller/edit/1
?Essayez d'utiliser l'un de ces:
Ou à l'intérieur de votre formulaire ajouter un hidden "Id" champ
Vous obtenez cette erreur, car ASP.NET MVC ne trouvez pas un paramètre id de la valeur à fournir pour le paramètre id de votre méthode d'action.
Vous devez soit passer comme faisant partie de l'url ("/Home/Modifier/123"), comme un paramètre de chaîne de requête ("/Home/Edit?id=123") ou comme un Posté paramètre (assurez-vous d'avoir quelque chose comme
<input type="hidden" name="id" value="123" />
dans votre formulaire HTML).Alternativement, vous pourriez faire le
id
paramètre être nullable int (Edit(int? id, User collection) {...}
), mais si l'identité a été nul, vous ne savez pas quoi modifier.Juste au cas où cela aide quelqu'un d'autre, cette erreur peut se produire dans Visual Studio si vous avez un point de Vue que l'onglet ouvert, et que l'onglet dépend d'un paramètre.
Fermer l'affichage en cours et démarrer votre application, et l'application démarrer "Normalement"; si vous avez une vue ouverte, Visual Studio interprète cela comme vous voulez exécuter la vue actuelle.
Il suffit de changer votre ligne de code à
d'où vous appelez cette fonction qui va passer corect id
J'ai eu la même erreur, mais pour moi, le problème était que j'était en train de faire la demande avec un mal, GUID. J'ai raté les 2 derniers caractères.