Passing complex objects into a WCF Rest Service

后端 未结 2 1804
予麋鹿
予麋鹿 2020-12-01 02:33

I have an Operation Contract that accepts a complex object and I\'m calling the operation through jQuery. How do I pass in a complex type object like that using jQuery. Bel

2条回答
  •  感情败类
    2020-12-01 03:04

    Check out Gil Fink's blog regarding Combining WCF Data Services, JSONP and jQuery

    http://blogs.microsoft.co.il/blogs/gilf/archive/2011/04/24/combining-wcf-data-services-jsonp-and-jquery.aspx

    During Mike Flasko’s session at MIX11, he showed how to create a JSONP aware WCF Data Service with a JSONPSupportBehavior attribute that is available for download from MSDN code gallery (and is supposed to be a part of Microsoft.Data.Services.Extensions namespace). In this post I’ll show a simple example that uses the attribute and jQuery in order to make a JSONP cross domain call for a WCF Data Service.

    Setting up the Environment

    First I started by creating two different ASP.NET web applications. The first application includes the calling page and the second includes the WCF Data Service. Then, I created in the second web application an Entity Framework model and the WCF Data Service from that model. I also added the JSONPSupportBehavior.cs class that exists in the link I supplied earlier. The class includes the implementation of JSONPSupportBehavior which implements the WCF IDispatchMessageInspector interface. Also it includes the JSONPSupportBehaviorAttribute which I use in my code. The code is simple and looks like:

    [JSONPSupportBehavior] 
    public class SchoolDataService : DataService
    {
      // This method is called only once to initialize service-wide policies.
      public static void InitializeService(DataServiceConfiguration config)
      {      
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);      
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
      }
    }
    

    Making the JSONP Call

    In the second web application I’ve created a web form that will hold the JSONP call example. Here is the code that makes the call:

    
    
    
        JSONP Call
        
    
    
        

    Lets explore the web form code: At first I use Microsoft CDN in order to retrieve the jQuery library. Then, I’ve created a HTML5 output element in order to append to it the output of the call. In the main script I use jQuery’s getJSON function which is calling the WCF Data Service. Pay attention that in order to get a JSON response from the WCF Data Service you need to use the $format=json query string parameter. After I retrieve the data I iterate and create a div element for each course title that was retrieved. This is done in the success function that I wired in the getJSON function call. Here is the output of running the code:

    enter image description here

    Summary

    In the post I supplied a simple example of making a JSONP call to a WCF Data Service using jQuery. This sort of solution can help you to consume WCF Data Services that exists in other domains from your client side. In a follow up post I’ll show the same example using the new datajs library

提交回复
热议问题