Skip to main content

WEB API: PASSING A COMPLEX TYPE IN JSON USING J QUERY

In my  project i wanted to pass a complex type to the Post method of an Web Api controller. The Post itself will be done using JQuery in the JSON format. I noticed that the parameter was always null. After a bit of searching i found the solution

Server Side code 

 public class ValuesController : ApiController
    {

        public class MyComplexType
        {
            public string Name { get; set; }

            public MyComplexSubType MyComplexSubType { get; set; }
        }

        public class MyComplexSubType
        {
            public int Age { get; set; }
        }

        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<controller>/5
        public string Get(int id)
        {
            return "value";
        }
     

        // POST api/values
        public void Post(MyComplexType value)
        {

        }       

        // PUT api/<controller>/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/<controller>/5
        public void Delete(int id)
        {
        }
}

THE MISSING LINK You need to be Add 


With this set-up the parameter will always be null. We need to add a line of code to the global.asax.
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());

Html Page 

<input type="button"  name="test" title="test" onclick="GeneralPost();" />

script 

<script type="text/javascript">
          
            function GeneralPost() {
                var dataJSON = { FirstName: 'dd', LastName: 'dd' };
                var value = {};
                value.FirstName = "test";
                value.LastName = "lasttest"
                jQuery.support.cors = true;
                debugger
                $.ajax({
                    
                    url: 'http://localhost:29793/api/Values',
                    type: 'POST',
                    async: true,
                    cache: false,
                    data: dataJSON,
                    contentType: 'application/x-www-form-urlencoded',
                    dataType: 'json',
                    success: SendComplexTypeCallBack
}); } function SendComplexTypeCallBack(data) { alert("Complex type sended"); } </script>

  Happy coding ....... 

Out Put :



Reference urls 

http://www.codeproject.com/Articles/424461/Implementing-Consuming-ASP-NET-WEB-API-from-JQuery

Comments

Popular posts from this blog

Asp.Net AjaxFileUpload Control With Drag Drop And Progress Bar

This Example explains how to use AjaxFileUpload Control With Drag Drop And Progress Bar Functionality In Asp.Net 2.0 3.5 4.0 C# And VB.NET. Previous Post  I was Explained about the   jQuery - Allow Alphanumeric (Alphabets & Numbers) Characters in Textbox using JavaScript  ,  Fileupload show selected file in label when file selected  ,  Check for file size with JavaScript before uploading  . May 2012 release of AjaxControlToolkit includes a new AjaxFileUpload Control  which supports Multiple File Upload, Progress Bar and Drag And Drop functionality. These new features are supported by Google Chrome version 16+, Firefox 8+ , Safari 5+ and Internet explorer 10 + , IE9 or earlier does not support this feature. To start with it, download and put latest AjaxControlToolkit.dll in Bin folder of application, Place ToolkitScriptManager  and AjaxFileUpload on the page. HTML SOURCE < asp:ToolkitScriptManager I...

AngularJS Interview Questions and Answers

1) What is Angular.js ? AngularJS is a javascript framework used for creating single web page applications.  It allows you to use HTML as your template language and enables you to extend HTML’s syntax to express your application’s components clearly 2) Explain what are the key features of Angular.js ? The key features of angular.js are Scope Controller Model View Services Data Binding Directives Filters Testable 3) Explain what is scope in Angular.js ? Scope refers to the application model, it acts like glue between application controller and the view.  Scopes are arranged in hierarchical structure and impersonate the DOM ( Document Object Model) structure of the application.  It can watch expressions and propagate events. 4) Explain what is services in Angular.js ? In angular.js services are the singleton objects or functions that are used for carrying out specific tasks.  It holds some business logic and these function can be called as contro...

Compare database schema sql server free tools

Compare database schema sql server free tools SQL Admin Studio https://www.simego.com/Install/SQL-Tools Open DBDiff 0.9 http://opendbiff.codeplex.com/releases/view/72756 Related Urls : What is best tool to compare two SQL Server databases (schema and data) http://stackoverflow.com/questions/193438/what-is-a-free-tool-to-compare-two-sql-server-databases http://stackoverflow.com/questions/685053/what-is-best-tool-to-compare-two-sql-server-databases-schema-and-data