2010-10-21 85 views
4

對於那裏的MVC專家來說,這應該相對簡單,但我仍然在學習繩索。如何通過AJAX呈現部分視圖?

  • 我有一個視圖不是強類型,只需ViewPage<dynamic>
  • 這一觀點,我有一個文本框,這是使用jQuery的自動完成功能擴展
  • 當用戶鍵入的東西到文本框,自動完成做一個AJAX調用一個控制器,它調用存儲過程,返回一個JSON收集的記錄,用2個屬性:
    • ID(IDENTIFER該項目)
    • 名稱(用於項名稱)

現在,隨着jQuery的自動完成UI插件,當用戶點擊了在自動完成中顯示的項目中的一個,一個客戶端事件被調用,通過JSON對象傳遞:

// .. snip heaps of jQuery 
select: function (event, ui) { 
    // ui is a JSON object: 
    // ui.item.id 
    // ui.item.name 
} 

現在我的問題是 - 從這個客戶端事件,我需要顯示在同一頁(在texbox下面),擴展關於這個項目的信息。 (顯然需要另一個AJAX調用服務器)。

我該怎麼做?我唯一能想到的就是讓jQuery調用另一個控制器,它返回一個JsonResult,然後手動解析這個JSON,並顯示我想要的HTML。

這是唯一的方法嗎?有沒有可以使用的幫手?我的View沒有強類型的原因是因爲當頁面加載時,沒有關於模型的信息顯示,只是一個文本框。

我真的希望我可以創建一個強類型的局部視圖,並以某種方式在這個局部視圖上調用RenderPartial,並傳遞我想要顯示的項目的ID。這可能來自客戶端/ AJAX?

+0

http://stackoverflow.com/search? q = partial + view + ajax – jfar 2010-10-22 03:55:50

回答

12

您可以使用jQuery從控制器請求html以及Json。所以,你的jQuery看起來是這樣的:

$.get(action, null, function(data){ 
    $('#someDiv').html(data); 
}, 'html'); 

,你控制器可返回:

return PartialView("SomePartial", Model) 

和HTML會被渲染到屏幕

+0

具體來說,jQuery代碼片段中的'action'是一個控制器操作的路徑(使用ui.item.id)。 – automagic 2010-10-21 23:35:41

+0

立即試用此產品,敬請關注... – RPM1984 2010-10-21 23:38:10

+0

精美的作品。真棒。 +1和已接受。謝謝!!! – RPM1984 2010-10-21 23:42:50