Asp.net mvc ajax回发后部分视图未清除

Asp.net mvc ajax回发后部分视图未清除,asp.net-mvc,ajax,partial-views,Asp.net Mvc,Ajax,Partial Views,我有一件奇怪的事情发生 我有一个局部视图,上面有3个字段。我在我的操作结果中发布jqueryajax,如果模型通过验证,我会保存记录。然后,我还将模型设置为空,并将其作为局部视图传递回视图 public ActionResult jQueryAddComment(Comment comment) { if (ModelState.IsValid) { //do stuff here comment =

我有一件奇怪的事情发生

我有一个局部视图,上面有3个字段。我在我的操作结果中发布jqueryajax,如果模型通过验证,我会保存记录。然后,我还将模型设置为空,并将其作为局部视图传递回视图

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

        return PartialView("AddNewComment", comment);
    }
    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用新的部分视图中的html替换comments div的内容

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

        return PartialView("AddNewComment", comment);
    }
    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中的字段,因为我希望使用相同的代码来呈现错误和成功的请求。

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

这可能有助于:

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

这可能有助于:

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

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

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

return PartialView("AddNewComment", comment);
在将新的空白模型作为局部视图返回之前,请使用
ModelState.Clear()
,如:

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

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

return PartialView("AddNewComment", comment);

@格里格斯,很好,很高兴这有帮助。当这发生在我身上时,我不得不深入研究MVC源代码。@griegs,很好,很高兴这对我有帮助。当这件事发生在我身上时,我不得不深入研究MVC源代码。