In this article I will explain with an example, what is a Web API, why do we use it and how to use it in ASP.Net MVC.
	
		This article will explain how to make a 
jQuery POST call to Web API 2 Controller’s method using 
jQuery AJAX in ASP.Net MVC.
 
	
	
		 
	
		 
	
		
			What is Web API?
	
	
		ASP.Net Web API is a framework to build HTTP services which can be consumed by cross platform clients including desktops or mobile devices irrespective of the Browsers or Operating Systems being used.
	
		ASP.Net Web API supports RESTful applications and uses GET, PUT, POST, DELETE verbs for client communications.
	
		 
	
		 
	
		
			Model
	
	
		The Model class consists of following properties.
	
		
			public class PersonModel
		
			{
		
			    ///<summary>
		
			    /// Gets or sets Name.
		
			    ///</summary>
		
			    public string Name { get; set; }
		
			 
		
			    ///<summary>
		
			    /// Gets or sets DateTime.
		
			    ///</summary>
		
			    public string DateTime { get; set; }
		
			}
	 
	
		 
	
		 
	
		
			Web API Controller
	
	
		In order to add a Web API Controller you will need to Right Click the Controllers folder in the Solution Explorer.
	
		Then, click on Add and next click on Controller and select WebAPI.
	
		Now from the Add New Scaffold Item window, choose the Web API 2 Controller – Empty option as shown below.
	
	
		 
	
		Then give it a suitable name and click on Add button.
	
	
		 
	
		Next, you will need to register the Configuration for Web API in the Global.asax file so that the Web API is available for accessing on Web.
	
		Now, Open Global.asax file and add the following line.
	
		
			System.Web.Http.GlobalConfiguration.Configure(WebApiConfig.Register);
	 
	
		 
	
		Please refer the complete code as shown below.
	
		
			public class MvcApplication : System.Web.HttpApplication
		
			{
		
			    protected void Application_Start()
		
			    {
		
			        AreaRegistration.RegisterAllAreas();
		
			        System.Web.Http.GlobalConfiguration.Configure(WebApiConfig.Register);
		
			        RouteConfig.RegisterRoutes(RouteTable.Routes);
		
			    }
		
			}
	 
	
		 
	
		Then, inside the Web API Controller, the Route attribute is specified which defines its Route for calling the Web API method and HttpPost attribute which signifies that the method will accept Http Post requests.
	
		The Web API Controller consists of AjaxMethod method which accepts an object of PersonModel class as a parameter.
	
		Finally, the DateTime property is set and PersonModel class object is returned.
	
		
			public class AjaxAPIController : ApiController
		
			{
		
			    [Route("api/AjaxAPI/AjaxMethod")]
		
			    [HttpPost]
		
			    public PersonModel AjaxMethod(PersonModel person)
		
			    {
		
			        person.DateTime = DateTime.Now.ToString();
		
			        return person;
		
			    }
		
			}
	 
	
		 
	
		 
	
		
			Controller
	
	
		The Controller consists of following Action method.
	
		
			Action method for handling GET operation
	
	
		Inside this Action method, simply the View is returned.
	
		
			public class HomeController : Controller
		
			{
		
			    // GET: Home
		
			    public ActionResult Index()
		
			    {
		
			        return View();
		
			    }
		
			}
	 
	
		 
	
		 
	
		
			View
	
	
		The View consists of an HTML TextBox element and a Button.
	
		Inside the View, the following 
jQuery CSS script file is inherited.
 
	
		1. jquery.min.js
	
		 
	
		The Button has been assigned a 
jQuery click event handler.
 
	
		When the Button is clicked, a 
jQuery AJAX call is made to the Web API 2 Controller’s method.
 
	
	
		 
	
		Then, the URL for the 
jQuery AJAX call is set to the Web API 2 Controller’s method and the value of the TextBox is passed as parameter.
 
	
		Finally, the appropriate message is displayed using 
JavaScript Alert Message Box.
 
	
		
			@{
		
			    Layout = null;
		
			}
		
			 
		
			<!DOCTYPE html>
		
			 
		
			<html>
		
			<head>
		
			    <meta name="viewport" content="width=device-width" />
		
			    <title>Index</title>
		
			</head>
		
			<body>
		
			    <input type="text" id="txtName" />
		
			    <input type="button" id="btnGet" value="Get Current Time" />
		
			    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
		
			    <script type="text/javascript">
		
			        $(function () {
		
			           $("#btnGet").click(function () {
		
			                var person = '{Name: "' + $("#txtName").val() + '" }';
		
			                $.ajax({
		
			                    type: "POST",
		
			                    url: "/api/AjaxAPI/AjaxMethod",
		
			                    data: person,
		
			                    contentType: "application/json; charset=utf-8",
		
			                    dataType: "json",
		
			                    success: function (response) {
		
			                        alert("Hello: " + response.Name + ".\nCurrent Date and Time: " + response.DateTime);
		
			                    },
		
			                    failure: function (response) {
		
			                        alert(response.responseText);
		
			                    },
		
			                    error: function (response) {
		
			                        alert(response.responseText);
		
			                    }
		
			                });
		
			            });
		
			        });
		
			    </script>
		
			</body>
		
			</html>
	 
	
		 
	
		 
	
		
			Screenshot
	
	
	
		 
	
		 
	
		
			Downloads