2010-08-16 40 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);