2010-02-08 68 views
0

我有一個asp.net mvc視圖,其中頁面的頂部是一個表。我想要的是點擊表格中的一行,該表格將轉到服務器並獲取有關該表格的詳細信息。這工作正常,我在Json中返回細節。什麼是顯示jQuery json調用結果partialview的最佳方式

問題是我知道要顯示下面的詳細信息面板。現在我已經在部分視圖中完成了詳細信息窗格。

我怎麼會「鉤住這個」使用jquery,所以當我點擊行,詳細信息窗格顯示與填寫正確的模型數據。

  1. 我是否棄用json並在我的控制器操作中簡單生成html並將html返回到視圖以顯示詳細信息窗格?
  2. 其他最佳實踐或建議?

回答

2

我假設你使用MVC的Ajax助手來調用你的控制器來獲得你的JSon結果?

另一種方法是使用JQuery調用您的JSon控制器。因此,在鏈接或按鈕上點擊,您可以調用一些JavaScript,從隱藏的標籤中找到需要傳遞給控制器​​的標識。當您收到JSon結果時,您只需設置html標記的屬性並顯示/隱藏詳細信息窗格。事情是這樣的:

function ShowPartial() { 
    var ID = $("#hiddenValue").attr("value"); 
    $.getJSON("YourUrl" + ID, function(result) { 
     $.each(result, function(item) { 
      // Set you html properties using this["JSonPropertyName"] 
     }); 
    }); 
} 

另一種方法是簡單地使用MVC阿賈克斯傭工,並與局部的細節視圖更新div標籤,而不是使用JSON。

+0

我正在使用jquery $ .getJson來調用我的控制器操作並返回json – leora 2010-02-08 14:40:42

+0

使用這種方法,您將不得不使用javascript自己生成html。而你需要混合HTML,當你加載頁面時不應該在那裏。也就是說,在我看來,不好的做法,我可能會考慮從控制器操作返回HTML更好的方法。 – 2010-02-08 14:45:34

+0

你可能已經擁有了所有生成的html,並且只是在json返回時設置了這些值並取消隱藏它們,但我同意這不是一個最佳解決方案,並且從控制器返回html是最好的方法。 – lancscoder 2010-02-08 14:48:24

0

我會去像客戶端模板引擎jtemplates(jquery插件)來處理這個客戶端。您可以簡單地從控制器操作中返回一個partialview,並在頁面上將該html呈現在您想要的位置。但我認爲從ajax請求返回html是一種不好的做法,我寧願返回一個json對象。

+0

這正是我的dillema。將html返回給視圖似乎更容易,但它似乎打破了關注的分離。 。 – leora 2010-02-08 14:32:49

+0

然後嘗試jtemplates(我提到的鏈接)。有了這個,你可以將一個json對象「綁定」到一個預定義的模板上,就像你將模型轉換爲視圖一樣,而不是客戶端。還有其他像這樣的引擎,如果你不喜歡這個或不使用jQuery。 – 2010-02-08 14:35:34

相關問題