迈出 ASP.NET MVC 的第一步,我试图创建一个简单的(典型的)带有评论的文章页面:在文章本身下应该有一个表单,使用户可以对文章发表评论。
我为提交表单创建了一个部分视图,并CommentController
使用以下方法:
public ActionResult Add(int entryId);
[HttpPost]
public ActionResult Add(Comment comment);
然后,在文章的视图下HomeController
:
<div class="add-comment">
@{ Html.RenderAction("Add", "Comment", new { entryId = Model.EntryId }); }
</div>
表单正确呈现并且添加过程实际工作(评论保存到数据库中),但在重定向回文章后 InvalidOperationException
抛出,Html.RenderAction
(如上所示)在调试器中突出显示:
System.InvalidOperationException:不允许子操作执行重定向操作。
为什么会这样?
这是CommentController
方法的代码:
public ActionResult Add(int entryId)
{
var comment = new Comment { EntryId = entryId };
return PartialView(comment);
}
[HttpPost]
public ActionResult Add(Comment comment)
{
if (ModelState.IsValid)
{
comment.Date = DateTime.Now;
var entry = db.Entries.FirstOrDefault(e => e.EntryId == comment.EntryId);
if (entry != null)
{
entry.Comments.Add(comment);
db.SaveChanges();
return RedirectToAction("Show", "Home", new { id = entry.EntryId });
}
}
return PartialView(comment);
}
或者我什至应该采取不同的方法?