2010-03-31 68 views
0

基本上我所知道的是web服務以xml格式返回數據。一旦我調用Web服務來從Web服務函數(GetUserList)中檢索數據,我想要獲取該數據,然後以動態方式顯示(無回傳)結果信息。我知道這樣做的幾種方法:使用網絡服務(ASP.MVC)的最佳實踐

webservice發送數據回到JavaScript,然後JavaScript解析,替換字符串或文本內的div或子,或採取檢索到的信息,然後通過JavaScript將其放入html表格格式。

這些是我想到的一些想法,有沒有人知道這樣做的最佳做法?

使用ASP.MVC(.Net)

回答

1

它完全取決於您的應用程序。我已經有了操作返回純數據(通常是JSON,而不是XML),並處理了客戶端中的顯示,並且該操作返回了部分視圖。對於大多數複雜的顯示場景,我認爲局部視圖路線是最簡單的。基本上,您只返回將要更新的頁面部分(HTML)。您可以在AJAX回調處理程序中使用JavaScript,以使用從服務器獲取的HTML替換頁面上的相應元素。請注意,當你這樣做時,你需要小心事件處理程序綁定 - 在jQuery 1.4+中使用活動處理程序幾乎總是正確的,並且重新綁定所有的,但在jQuery 1.3中單擊處理程序。

示例:假定您正在調用返回分部視圖的MVC操作方法。這將在foo控制器上每5秒調用一次show操作,並使用返回的HTML更新containerToUpdate(推測是DIV)。

setInterval(
     function() { 
      $.get('<%= Url.Action("show", "foo", new { id = Model.ID }) %>', 
       function(html) { 
        $('#containerToUpdate').html(html); 
       }); 
     }, 5000 
); 

服務器端:

[AcceptVerbs(HttpVerbs.Get)] 
    public ActionResult Show(int id) 
    { 
     var model = ... 

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

的完整視圖(非AJAX)可能是不必要的 - 你可能只想顯示,如果用戶不應該只是訪問這個錯誤通過AJAX。如果您同時支持,只需在完整視圖內呈現需要的部分,以便重用部分視圖代碼。

+0

你可以舉一個例子說明你的意思是使用ajax回調處理程序嗎? 另請注意,Web服務每隔X秒以javascript間隔調用一次。 欣賞幫助 – eqiz 2010-03-31 19:33:41

+0

我已經在後端添加了一個使用MVC的平臺服務示例。 – tvanfosson 2010-03-31 20:42:32

+0

非常感謝您的幫助,非常感謝 – eqiz 2010-04-01 01:29:51