Etat du modèle non valide
J'ai donc une vue appelée indice qui définit tous les threads dans ma base de données. Puis à l'intérieur de ce point de vue je suis le chargement de toutes les observations sur les fils. Quand je l'appelle sur mon formulaire qui est censé créer un nouveau commentaire, il continue à me dire que mon modèle d'état n'est pas valide. Il me dit qu'il ne peut pas convertir de type chaîne de profil type ou un commentaire ou une étiquette. À l'origine, j'ai eu ce que mon code:
public ActionResult AddComment(Thread thread, string commentBody)
{
if (ModelState.IsValid)
{
_repository.AddComment(thread, comment);
TempData["Message"] = "Your comment was added.";
return RedirectToAction("Index");
}
Alors je l'ai changé pour cette:
public ActionResult AddComment(Thread thread, string commentBody)
{
Profile profile = _profileRepository.Profiles.FirstOrDefault(x => x.Id == thread.ProfileId);
Tag tag = _tagRepository.Tags.FirstOrDefault(t => t.Id == thread.TagId);
thread.ThreadTag = tag;
thread.Profile = profile;
Comment comment = new Comment()
{
CommentBody = commentBody,
ParentThread = thread
};
if (ModelState.IsValid)
{
_repository.AddComment(thread, comment);
TempData["Message"] = "Your comment was added.";
return RedirectToAction("Index");
}
Ce toujours me dit que mon modèle d'état n'est pas valide. Comment puis-je obtenir en sorte qu'il ne va pas essayer de changer l'état?
Aussi ici est la forme qui est utilisée pour appeler cette action:
@using(Html.BeginForm("AddComment", "Thread", mod))
{
<input type="text" name="AddComment" id="text" />
<input type="submit" value="Save"/>
}
Dans l'exemple de code ci-dessus mod est le modèle qui est un thread.
Et comme l'a demandé ici est tout à l'intérieur du fil:
public Thread()
{
this.ChildComments = new HashSet<Comment>();
}
public int Id { get; set; }
public string TopicHeader { get; set; }
public string TopicBody { get; set; }
public Nullable<int> UpVotes { get; set; }
public Nullable<int> DownVotes { get; set; }
public int ProfileId { get; set; }
public int TagId { get; set; }
public virtual Profile Profile { get; set; }
public virtual ICollection<Comment> ChildComments { get; set; }
public virtual Tag ThreadTag { get; set; }
Et enfin le commentaire catégorie:
public partial class Comment
{
public int Id { get; set; }
public string CommentBody { get; set; }
public int UpVotes { get; set; }
public int DownVotes { get; set; }
public virtual Thread ParentThread { get; set; }
}
source d'informationauteur Robert Young | 2012-03-08
Vous devez vous connecter pour publier un commentaire.
Utiliser le code ci-dessous pour itérer sur les erreurs. Ensuite, vous pouvez voir quel domaine et quel objet est l'échec de la validation. Et alors vous pouvez aller à partir de là. Simplement en regardant la propriété IsValid ne va pas donner assez d'informations.
Et ensuite une boucle à travers les erreurs.
Avant de vérifier votre erreur, vous devez savoir pourquoi le modèle d'état non valide. Vous pouvez facilement le faire en débogage et de voir la liste des erreurs.
La deuxième erreur doit être séparé des questions que je crois être écrit dans stackoverflow lignes directrices.