使用Web服务的最佳实践(ASP.MVC)

时间:2010-03-31 18:43:47

标签: asp.net-mvc web-services

基本上我所拥有的是以xml格式返回数据的Web服务。一旦我调用Web服务来从Web服务函数(GetUserList)中检索数据,我想获取该数据,然后动态显示(无回发)结果信息。我知道有几种方法可以做到这一点:

webservice将数据发送回javascript,javascript然后解析,替换div或child中的字符串或文本,或者获取检索到的信息,然后通过javascript将其放入html表格式。

这些是我想出的一些想法,是否有人知道这样做的最佳做法?

使用ASP.MVC(.Net)

1 个答案:

答案 0 :(得分:1)

完全取决于您的申请。我已经让动作返回纯数据(通常是JSON,而不是XML)并处理客户端中的显示并让操作返回局部视图。对于大多数复杂的显示场景,我认为局部视图路径最简单。实质上,您只返回要更新的页面部分(HTML)。您可以在AJAX回调处理程序中使用javascript,用您从服务器返回的HTML替换页面上的相应元素。请注意,在执行此操作时需要注意事件处理程序绑定 - 在jQuery 1.4+中使用实时处理程序并在jQuery 1.3中重新绑定除了单击处理程序之外几乎总是正确的做法。

示例:假设您正在调用返回局部视图的MVC操作方法。这将每隔5秒调用show控制器上的foo操作并更新containerToUpdate(可能是DIV),并返回html。

  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访问此视图,您可能只想显示错误。如果您同时支持两者,只需在完整视图内部渲染部分,以便重用部分视图代码。