2010-08-16 42 views
1

我有这种奇怪的事情发生。ajax回发后部分视图不清除

我有一个部分视图,上面有3个字段。我做了一个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中的字段。

回答

3

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

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

+0

你怎么样?感谢这一点,现在效果很好。 – griegs 2010-08-16 23:47:05

+0

@griegs,很好,很高兴这是有帮助的。当这件事发生在我身上时,不得不深入MVC的来源。 – jfar 2010-08-17 00:37:50

3

使用ModelState.Clear()返回新的空白模型的局部视图,像以前一样:

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

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

return PartialView("AddNewComment", comment);