2010-03-03 70 views
6

我很滿意RenderAction()函數的功能。但是,我想要在部分呈現的動作中加載和存儲數據,以便在一個頁面中發生所有事情。ASP.NET MVC - Ajax化RenderAction

想象一下以下情況:我有一篇文章詳情視圖,文章內容下面有一個「添加評論」鏈接。點擊後,評論表單會顯示在帖子內容的下方。用戶應該能夠填充評論框,併發送數據而不刷新整個視圖,而只是部分呈現的操作。此外,該視圖必須提供幾個註釋以在同一個會話中添加(對RenderAction()的幾個AJAX調用);

這是實現該目標的最佳方法嗎?

回答

13

操作:

[HttpGet] 
public ActionResult AddComment() 
{ 
    return PartialView(); // presumes partial view is called "AddComment" and needs no model 
          // you know what to do otherwise. 
} 

查看:

<input type="button" value="Add Comment" onclick="addComment()" /> 

的JavaScript:

function addComment() { 
    $("#comments").append("<div></div>").load("/ControllerName/AddComment"); 
} 

這是基礎。只要你喜歡,你可以使它變得複雜。

+0

提交評論數據怎麼樣?這會在文章視圖「內部」發生,而不刷新頁面? – xantrus 2010-03-03 20:29:02

+0

要提交評論數據,只需「發佈」表單,同步或異步。如果你願意的話,每個評論可以有一個表單,如果你把它放在你的部分內容中。如果你不想刷新頁面,那麼在表單中異步地POST'表單並且在JavaScript中更新頁面(刪除編輯器並且添加一個帶註釋的div)。 – 2010-03-03 20:53:14