我最近开始使用MVC,作为测试项目,我创建了一个简单的“博客”。我有一个基本结构,主页面显示所有帖子,当你点击它时,它将进入详细页面。
现在我正在尝试从comments
视图中添加Home/Details
(Comment.cs)到我的帖子,这基本上要求我在1个视图中有2个模型。模型1是Post
模型,模型2是Comment
模型;
这是我Home/details
视图的代码:
@model MVCPortfolio.Models.Post
@{
ViewBag.Title = "Details";
}
<h2>@Model.Title - @Model.Author</h2>
<fieldset>
<legend>Posted on @Model.Date.ToShortDateString()</legend>
<div class="content">
@Model.Content
</div>
</fieldset>
<div class="comments">
<ul>
@foreach (var c in Model.Comments)
{
<li>
@c.Content - @c.Author
</li>
}
</ul>
</div>
<div class="newcomment">
@* @Html.EditorFor(model => model) *@
</div>
<p>
@*
@Html.ActionLink("New Comment", "Comment", new { id = Model.PostId })
*@
|
@Html.ActionLink("Back to List", "Index")
</p>
这是我的家庭控制器,我想在其中添加评论。
private PortfolioEntities db = new PortfolioEntities();
//
// GET: /Home/
public ActionResult Index()
{
var posts = (from p in db.Posts
orderby p.Date
select p);
return View(posts);
}
public ActionResult Details(int id)
{
var post = (from p in db.Posts
where p.PostId == id
select p).Single();
return View(post);
}
[HttpPost]
public ActionResult Comment(Comment comment)
{
if (ModelState.IsValid)
{
db.Comments.Add(comment);
db.SaveChanges();
return RedirectToAction("Details");
}
return View(comment);
}
}
但我不明白的是如何将comment
添加到post
,我可以轻松添加新的post
(see my Create.cshtml view),但我不能弄清楚如何在comment
详细信息视图中添加post
。
感谢您的时间, 托马斯
答案 0 :(得分:2)
鉴于澄清,我认为您应该为此创建一个partial view。
在您看来,替换
@Html.ActionLink("New Comment", "Comment", new { id = Model.PostId })
调用渲染局部视图
@Html.Partial("_Comment")
您的部分视图应该处理添加Comment
的用户界面,最后在Comment
PostController
操作方法