部分视图在ajax回发后没有清除

时间:2010-08-16 22:51:32

标签: asp.net-mvc ajax partial-views

我发生了这种奇怪的事情。

我有一个包含3个字段的PartialView。我对我的动作结果做一个jQuery ajax帖子,如果模型通过验证,我保存记录。然后我还将模型设置为空并将其作为局部视图传递回视图。

    public ActionResult jQueryAddComment(Comment comment)
    {
        if (ModelState.IsValid)
        {
            //do stuff here
            comment = new Comment();
        }

        return PartialView("AddNewComment", comment);
    }

当我回到页面时,我的JS用新的局部视图中的html替换了注释div的内容。

    function submitComment() {
        $.post('/Home/jQueryAddComment', { forumItemId: $('#id').val(), owner: $('#owner').val(), text: tinyMCE.get('text').getContent(), emailAddress: $('#emailAddress').val() }, function (result) {
            alert(result);
            $('.AddNewComment').html(result);
        });            
    }

但是,当页面呈现时,值会重新到位。我可以看到一个空模型被传递给视图,为什么我以前的值仍然存在?

即使我将空对象传递给控制器​​中的局部视图,即使警报也显示了值。

修改

我应该提一下,我无法清除页面JS中的字段,因为我想使用相同的代码来呈现错误以及成功的请求。

2 个答案:

答案 0 :(得分:3)

在使用传递给帮助程序的值之前,标准HTML帮助程序会查看ModelState和ViewData中的值。

这可能会有所帮助: How to clear textboxes defined with MVC HTML helpers

答案 1 :(得分:3)

在将新的空白模型作为部分视图返回之前使用ModelState.Clear(),例如:

if (ModelState.IsValid)
{
    //your save logic

    ModelState.Clear();
    comment = new Comment();
}

return PartialView("AddNewComment", comment);