MVC3 - Modèle vide sur le poteau
J'ai deux modèles de la catégorie et de l'article. J'ai à peu près la même supprimer les vues et les contrôleurs pour eux deux. La seule différence est qu'il fonctionne pour les catégories, mais avec des articles-je obtenir un modèle vide sur HttpPost.
Catégories:
public ActionResult DeleteCat(int id)
{
Category cat = db.CategoryByID(id);
if (cat != null)
{
return View(cat);
}
return RedirectToAction("Index");
}
[HttpPost]
public ActionResult DeleteCat(Category model)
{
db.DeleteCategory(model.CategoryID);
return RedirectToAction("Index");
}
Articles:
public ActionResult Delete(int id)
{
Article art = db.ArticleByID(id);
if (art != null)
{
return View(art);
}
return RedirectToAction("Index");
}
[HttpPost]
public ActionResult Delete(Article model)
{
db.DeleteArticle(model.ArticleID);
return RedirectToAction("Index");
}
Les deux points de vue sont générés par Visual Studio et je n'ai pas changé depuis. Quand je veux supprimer une catégorie, tout va bien. Mais quand je veux supprimer un article, il obtient tout d'abord sélectionné correctement à partir de la base de données, puis la vue est affichée (tout est OK) mais quand je clique sur le bouton supprimer le modèle est vide (toutes les propriétés sont soit 0, null ou false (faux) et donc la db.DeleteArticle déclenche une exception (il n'y a pas d'article avec ArticleID = 0). Quelqu'un pourrait-il svp me fournir des indices quant à ce qui devrait-je vérifier ou comment contourner ce problème?
source d'informationauteur jak | 2011-06-01
Vous devez vous connecter pour publier un commentaire.
Il y a deux façons principales de ce qui peut arriver.
Une façon est que vous avez personnalisé la liaison de modèle qui ne fonctionne pas. Je suppose que vous faites tout de dehors-de-le-boîte de sorte à ne pas l'appliquer.
Le plus probable est que les données n'est pas Affiché. S'assurer que les champs existent à l'intérieur de la même Forme que le bouton Supprimer est de Poster.
Si le paramètre du modèle dans la [HttpPost] Action est le même nom qu'une propriété dans le modèle ce sera nulle et ne pourra pas la validation de dire que le champ était pas valide.
Exemple:
sankdmfskm
seranull
.Essayé dans MVC3 et MVC4.
Avait le même problème. L'une de mes propriétés dans le modèle a été appelé modèle
Après le changement de nom de la propriété à monmodèle. L'objet du modèle d'arrêté de retour null dans ActionResult
Assurer que votre modèle est marquant les propriétés des propriétés (si l'aide de VB ou C# avec get/set), pas un champ public... MVC ne carte à un champ public, mais pour le bien public.
J'ai eu le même problème que vous. Je l'ai fait dans votre cas
D'après modèle a été mis à jour il me fit, de valeurs propres et de ne pas null plus.
Je suis en ajoutant une réponse à cela, car il est différent des autres et que quelqu'un pourrait trouver utile.
J'ai eu un BaseViewModel comme je l'ai été à l'aide de plusieurs modèles dans une seule vue.
Sur mon Contrôleur de l'Action au lieu de passer le BaseViewModel (et les paramètres comme modèle.RegistrationModel.Nom d'utilisateur) j'ai passé RegistrationFormModel si elle n'est pas contraignante pour le BaseViewModel j'ai été à l'aide de mon point de vue
voir img - le problème que j'ai eu était que je passais le RegistrationModel dans le Post de l'action au lieu de la BaseAuthenticationModel (qui détient le RegistrationModel) dans la Vue. Si la liaison ne se passait pas correctement