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