In this article I will explain with an example, how to use 
AngularJS, 
AJAX and 
JSON in ASP.Net Core 3.
 
	
		This article will illustrate how to call Controller’s Action method using AngularJS $http service from View in ASP.Net Core 3.
	
	
		 
	
		 
	
		
			Configuring the JSON Serializer setting
	
	
	
		 
	
		 
	
		
			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; }
		
			}
	 
	
		 
	
		 
	
		
			Controller
	
	
		The Controller consists of following Action methods.
	
		
			Action method for handling GET operation
	
	
		Inside this Action method, simply the View is returned.
	
		 
	
		
			Action method for handling POST operation for AngularJS AJAX operation
	
	
		This Action method handles the 
AJAX call made from the 
AngularJS $http service in the View.
 
	
		The object of PersonModel class is received as parameter and the Name property holds the value of the TextBox sent from the View.
	
		Note: The FromBody attribute is used for model-binding the data sent from AngularJS $http service.
	
		 
	
		Finally, the Current DateTime of the Server is set into the 
DateTime property and the 
PersonModel class object is returned to the View in 
JSON format.
 
	
		
			public class HomeController : Controller
		
			{
		
			    public IActionResult Index()
		
			    {
		
			        return View();
		
			    }
		
			 
		
			    [HttpPost]
		
			    public IActionResult AjaxMethod([FromBody] PersonModel person)
		
			    {
		
			        person.DateTime = DateTime.Now.ToString();
		
			        return Json(person);
		
			    }
		
			}
	 
	
		 
	
		 
	
		
			View
	
	
		Inside the View, the following script file is inherited.
	
		1. angular.min.js
	
		The View consists of an HTML DIV to which 
ng-app and 
ng-controller AngularJS directives have been assigned.
 
	
	
		 
	
		The HTML DIV consists of an HTML TextBox and a Button. The Button has been assigned with 
AngularJS ng-click directive.
 
	
	
		 
	
		When the Button is clicked, the ButtonClick function is executed.
	
		Inside the 
ButtonClick function, the 
$http service is used to make an 
AJAX call to the Controller’s Action method. The 
$http service has following properties and events.
 
	
		
			Properties
	
	
		1. method – The method type of HTTP Request i.e. GET or POST.
	
		2. url – URL of the Controller’s Action method.
	
		3. datatype – The format of the data i.e. XML or 
JSON.
 
	
		4. data – The parameters to be sent to the Controller’s Action method.
	
		5. headers – List of headers to be specified for the HTTP Request.
	
		 
	
		
			Event Handlers
	
	
		1. success – This event handler is triggered once the 
AJAX call is successfully executed.
 
	
		2. error – This event handler is triggered when the 
AJAX call encounters an error.
 
	
		The response from the 
AJAX call is received in 
JSON format inside the 
Success event handler of the 
$http service and the result 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>
		
			    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script>
		
			    <script type="text/javascript">
		
			        var app = angular.module('MyApp', [])
		
			        app.controller('MyController', function ($scope, $http, $window) {
		
			            $scope.ButtonClick = function () {
		
			                var post = $http({
		
			                    method: "POST",
		
			                    url: "/Home/AjaxMethod",
		
			                    dataType: 'json',
		
			                    data: { name: $scope.Name },
		
			                    headers: { "Content-Type": "application/json" }
		
			                });
		
			 
		
			                post.success(function (data, status) {
		
			                    $window.alert("Hello: " + data.Name + ".\nCurrent Date and Time: " + data.DateTime);
		
			                });
		
			 
		
			                post.error(function (data, status) {
		
			                    $window.alert(data.Message);
		
			                });
		
			            }
		
			        });
		
			    </script>
		
			    <div ng-app="MyApp" ng-controller="MyController">
		
			        <input type="text" ng-model="Name" />
		
			        <input type="button" value="Get Current Time" ng-click="ButtonClick()" />
		
			    </div>
		
			</body>
		
			</html>
	 
	
		 
	
		 
	
		
			Screenshot
	
	
	
		 
	
		 
	
		
			Downloads