Ne peut pas comprendre pourquoi le modèle est nul sur la publication?
Je suis nouveau sur ASP.NET MVC et je suis en train de créer un blog simple type de site comme un moyen d'apprendre comment tout fonctionne. Mais, je vais avoir un problème lors de l'affichage d'un formulaire de commentaire à un modèle qui est nulle et je ne peux pas dire pourquoi.
Sur un blog, j'ai une "ajouter un commentaire" lien qui appelle certains de JQuery pour rendre une vue partielle qui est fortement typé à la CommentModel. Le lien passe dans l'ID du blog en tant que bien et le partiel est codée comme:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Blog.Models.CommentModel>" %>
<% using (Html.BeginForm())
{ %>
<%: Html.HiddenFor(x => x.Post.ID) %>
<%: Html.HiddenFor(x => x.CommentID) %>
<%: Html.TextBoxFor(x => x.Name) %><br />
<%: Html.TextBoxFor(x => x.Email) %><br />
<%: Html.TextBoxFor(x => x.Website) %><br />
<%: Html.TextAreaFor(x => x.Comment) %><br />
<input type="submit" value="submit" />
<% } %>
La CommentsModel est simple et ressemble à ceci (je n'ai pas fait de demande de validation, ou encore rien):
public class CommentModel
{
public BlogPost Post { get; set; }
public int CommentID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Website { get; set; }
public string Comment { get; set; }
}
C'est alors censé poster un simple contrôleur de l'action, de manière à ajouter un commentaire à la base de données et de renvoyer l'utilisateur à la page. Par souci de simplicité, j'ai enlevé la plupart du code, mais il ressemble à:
[HttpPost]
public ActionResult CommentForm(CommentModel model)
{
if (ModelState.IsValid)
{
}
else
{
}
}
Tout fonctionne comme prévu, sauf que lors de la validation du formulaire de commentaire, le commentaire du modèle est null. Je ne peux pas comprendre pourquoi cela est null. Quand j'ai vue la source de la vue partielle, je vois que le Post.ID" est renseignée avec l'ID correct, mais c'est perdu lorsque le formulaire est soumis.
Ai-je raté quelque chose d'évident ici? J'ai mis en place des formes similaires dans le passé et cela a bien fonctionné, je ne peux pas comprendre pourquoi ses pas maintenant. Merci à l'avance.
Plus Tard Edit:
J'avais tapé un code incorrect et a changé le public ActionResult CommentForm(CommentModel model)
de public ActionResult CommentForm(CommentModel comment)
qui a été à l'origine du problème.
Merci pour l'aide.
OriginalL'auteur NickK | 2011-11-06
Vous devez vous connecter pour publier un commentaire.
Même genre de question a été posée hier. Découvrez : MVC3 Insérez - la à l'aide d'ViewModel - la référence d'Objet n'est pas définie à une instance d'un objet
Le problème que je peux voir, c'est , lorsque le formulaire est validé, le Post.ID et CommentID sont passés, alors que votre action s'attend à une pleine soufflé objet de type "CommentModel". Le modèle de liaison est impossible de mapper les données post, dans le modèle objet.
OriginalL'auteur Pawan Mishra
Ajouter:
...à votre modèle, et de renseigner dans votre contrôleur comme un caché d'entrée. Le Poste de l'objet ne va pas analyser facilement.
OriginalL'auteur Jeremy Holovacs