2011-07-12 23 views
0

我來到我的MVC 3頁面中的一部分,我需要做一個JQuery $ .Ajax回調,但不像以前那樣我已經返回了一些簡單的值並使用JQuery I來處理更新UI需要刷新顯示主ViewModel數據的頁面部分。所以實際上它幾乎就像我需要做一個回調,而不是返回JSonResult我想返回原始視圖?我很確定,但我需要考慮使用部分視圖?任何人都可以建議,也許可以指向我一個很好的教程?如何使用部分視圖

在此先感謝。

+0

所以你想獲得完整的視圖,然後通過jQuery再次調用動作,並用部分版本的相同視圖替換HTML的一部分? – robmzd

+0

是的,真的很自我解釋。謝謝。 – MaRk

回答

2

如果我理解正確。在這種場景中,我通常重複使用相同的操作,但返回基於IsAjaxRequest方法的完整或部分視圖。

public ActionResult MyAction(string someParam) 
    { 
     //... 

     if (Request.IsAjaxRequest()) 
     { 
      return PartialView(model); 
     } 
     else 
     { 
      return View(model); 
     } 
    } 

這可隨後在jQuery中使用類似被稱爲:

$("a.myAction").click(function (event) 
{ 
    event.preventDefault(); 
    var button = $(this); 

    // Get more results using ajax 
    $.get(button.attr("href"), function (data) 
    { 
     // Add the new content 
     $('div#myActionResult').empty().html(data); 
    }, "html"); 
} 

您可能需要代替張貼或更改URL包含查詢字符串,如果你想將數據發送到行動改變視圖。

+0

好的謝謝,不知道我從這個例子中正確理解。我注意到你只是從模型的Controller動作方法中返回PartialView,它如何知道你想要重新渲染的PartialView? – MaRk

+0

它基於控制器和操作名稱確定它(如果添加視圖,它將把它放在與控制器匹配的文件夾中,並使用操作名稱作爲視圖的名稱)。您可以選擇將一個字符串參數添加到View/PartialView方法以提供視圖名稱。 – robmzd

+0

是的,就是這個robmzd。現在明白了; – MaRk