我正在处理的问题非常类似于StackOverflow显示问题的方式,其评论,帖子和与帖子相关的评论。层次结构是相同的。
如何在ASP.Net MVC中完成?
到目前为止,我有这个:(我已将文件命名为SO网站,以使我的问题更具可读性)
查看/问题/ Details.aspx
public class QuestionsController : Controller
{
public ActionResult Details(int? questionId)
{
Question question= _db.Question .First(i => i.QuestionId== questionId);
return View(question);
}
}
这会加载详细信息并显示问题。
我有一个名为QuestionComment的用户控件,它应显示问题的注释,但我不知道如何进行连线。我一直在使用Dinners解决方案作为指南。
答案 0 :(得分:4)
创建ViewModel以显示带注释的问题。像这样:
public class QuestionViewModel
{
public Question Question { get; set; }
public IEnumerable<Comment> Comments { get; set; }
}
您的控制器变为:
public class QuestionsController : Controller
{
public ActionResult Details(int? questionId)
{
var question = _db.Question.First(x => x.QuestionId == questionId);
var comments = _db.Comment.Where(x => x.QuestionId == questionId).ToList();
var model = new QuestionViewModel {
Question = question,
Comments = comments
};
return View("Details", model);
}
}
您的“详情”视图:
<%@ Page Inherits="System.Web.Mvc.ViewPage<QuestionViewModel>" %>
<% Html.Renderpartial("QuestionControl", model.Question); %>
<% Html.Renderpartial("CommentsControl", model.Comments); %>
“QuestionControl”部分查看:
<%@ Control Inherits="System.Web.Mvc.ViewUserControl<Question>" %>
<h3><%= Model.Title %></h3>
...
“CommentsControl”局部视图:
<%@ Control Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Comment>>" %>
<ul>
<% foreach (var comment in Model) { %>
<li>
<%= comment.Content %>
</li>
<% } %>
</ul>
...
答案 1 :(得分:0)
在你的视图中写下这样的东西;
<% foreach (var question in Model.Questions) { %>
<%=question.bodyText%>
<%}%>
希望这有帮助,如果不发表评论,我就不那么神秘了。