D'accord, j'ai un blog qui fonctionne à moitié et j'essaie d'obtenir des commentaires totalement fonctionnels. En ce moment j'ai tous les messages montrant correctement avec tous les commentaires correspondants avec eux. Le seul problème avec ceci est que vous ne pouvez pas réellement ajouter un commentaire à travers le site (je viens de le faire manuellement).Obtenir Create pour travailler dans un ViewModel?
J'ai déjà fait des méthodes "Create" dans mes Controllers, mais seulement par échafaudage automatique.
En ce moment je passe un ViewModel à la page comme suit (ce qui saisit les sujets et commentaires associés au blogpost lui-même.
public ActionResult Post(int id)
{
var post = (from p in db.Set<BlogPost>()
where p.id == id
select new PostViewModel
{
Id = p.id,
Title = p.Title,
DateCreated = p.DateCreated,
Content = p.Content,
Topics = p.Topics,
Comments = p.Comments,
CommentCount = p.Comments.Count
}).Single();
return View(post);
}
J'ai ce que mon Post.cshtml ...
<div class="blogpost">
<h2>@Model.Title</h2>
<div class="post_info">@Model.DateCreated<span class="right">Blog</span></div>
<p>@Html.Raw(Model.Content)</p>
<div class="post_close">
<span class="left">
@foreach (var topic in Model.Topics)
{
<text>@Html.DisplayFor(modelItem => topic.Name) </text>
}
</span>
<span class="right">
<img src="../../Content/images/comment.jpg" alt="" />
@if (Model.CommentCount > 1 || Model.CommentCount == 0)
{
@Model.CommentCount <text>comments</text> }
else
{
@Model.CommentCount <text>comment</text>
}
</span>
</div>
</div>
<div id="comments">
@foreach (var comment in Model.Comments)
{
<b>@Html.DisplayFor(modelItem => comment.Name)</b> <text>says... </text><br />
<i>@Html.DisplayFor(modelItem => comment.Content)</i><br />
}
</div>
Dans la div "comments", je souhaite ajouter un moyen de créer un nouveau commentaire, ce qui ne se fait évidemment pas de la manière traditionnelle avec un ViewModel étant le modèle au lieu du modèle "Commentaires". Par où commencer ici?
Je suis fondamentalement nouveau à MVC3 et l'idée de poster est très confuse par rapport à ce que j'étais habitué à des formulaires Web. Toute aide serait utile, merci!
(je modifier ce poste avec une personne d'information supplémentaire peut être nécessaire)