4

我是 asp .net mvc3 的新手。我正在尝试创建一个失败的简单博客评论部分。

我有一个 CommentsViewModel

public class CommentsViewModel
{
    public CommentModel NewComment { get; set; }
    public IList<CommentModel> CommentsList { get; set; }
}

对应的视图就像

<div id="CommentsArea">
@Html.Partial("CommentsList", Model.CommentsList)
</div>
@using (Ajax.BeginForm("Create",
                   "Comment",
                   new { id = Model.NewComment.detailsId, comment = Model.NewComment },
                   new AjaxOptions { UpdateTargetId = "CommentsArea" ,
                                     HttpMethod = "Post",
                                     InsertionMode = InsertionMode.Replace}))
{
<div class="display-label">Add Comment</div>
<div class="display-field">
    @Html.EditorFor(model => Model.NewComment.Body)
</div>
<input type="submit" value="Post" />
}

现在,当用户输入“发布”按钮时,我希望用新的评论列表更新“CommentsArea”,并用空文本清除表单值。

这是 Post 方法:

[HttpPost]
    public ActionResult Create(int id, CommentModel newcomment)
    {
        var newsItem = m_db.NewsList.Single(news => news.Id == id);
        if (!string.IsNullOrWhiteSpace(newcomment.Body))
        {
                newcomment.detailsId = id;
                newsItem.Comments.Add(newcomment);
                m_db.SaveChanges();
        }

        return PartialView("CommentsList", newsItem.Comments);
    }

现在,当用户单击“发布”按钮时,列表会正确更新,但不会清除表单值。即,如果我发布了评论“新评论”,评论列表将更新为“新评论”,但该文本仍保留在表单的编辑框中。

如何清除该文本?

4

1 回答 1

0

只需在表单提交成功时调用 js 函数。

@using (Ajax.BeginForm("Create",
                   "Comment",
                   new { id = Model.NewComment.detailsId, comment = Model.NewComment },
                   new AjaxOptions { OnSuccess="ClearInput", HttpMethod = "Post",}))

在 js 函数渲染上再次创建视图

function ClearInput(){
      //call action for render create view
      $.ajax({})
}
于 2012-04-05T13:47:03.727 回答