我有这两个模型类:
public class Article
{
public int ID { get; set; }
public string Title { get; set; }
public ICollection<Comment> Comments { get; set; }
}
public class Comment
{
public int ID { get; set; }
public int ArticleID { get; set; }
public string CommentTxt { get; set; }
public Article Article { get; set; }
}
public class ArticleDbContext : DbContext
{
public DbSet<Article> Articles { get; set; }
public DbSet<Comment> Comments { get; set; }
}
现在我想要一个页面,列出为文章插入的所有评论,并且在列表的下方我可以为该文章插入新评论吗?
答案 0 :(得分:0)
您可以为此创建viewmodel:
public class ArticleViewModel
{
public Article Article { get; set; }
public List<Comment> Comments { get; set; }
}
在控制器中:
public ActionResult Details(int id)
{
ArticleViewModel model = new ArticleViewModel();
model.Article = _yourDBRepository.GetArticleById(id);
model.Comments = _yourDBRepository.LoadCommentsByArticleId(id);
return View(model);
}
在视图中,您可以添加以下新评论项:
@using (Html.BeginForm("Create", "Comment", FormMethod.Post))
{
@Html.Hidden("ArticleId", Model.Article.Id)
@Html.TextBox("text", "", new { name = "text", id = "text", data_placeholder = "Enter comment" })
}
答案 1 :(得分:0)
在控制器
中//** Get Article
Public ActionResult Article (int ID)
{
Article article = db.Find(ID);
return(article)
}
//*Add comments
[HttpPost]
public ActionResult Addcomment (int articleID, string CommentTxt)
{
Article article = db.Find(ID);
Comment comment = new Comment();
db.Comments.Add(comment);
comment.ArticleID = articleID;
comment.CommentTxt = CommentTxt;
db.SaveChanges;
return PartialView(article);
}
//**Get List of comments after adding new comment
public ActionResult AllComments(int articleID)
{
Article article = db.Find(ID);
var comments = db.Comments.Where(a=>a.ArticleID == articleID).ToList();
return PartialView(comments);
}
在您的文章视图中:
<sript>
$('.addComment')click(function(){
$post('/Home/Addcomment?articleID=@Model.ID&CommentTxt='+$('.commenttext').val()).always(function()
{
$('.comments).Load(/Home/AllComments/articleID=@Model.ID)
});
})
</script>
//*Your article here
......
//*Comments section
<div class="comments">@Html.RenderAction("AllComments", "Home")</div>
<input type="text" class="commenttext" />
<button class="addComment">Add comment</button>
在您的AllComments视图中
<ul>
@foreach(var i in Model)
<li>
@i.CommentTxt
</li>
</ul>