I would like to know if there is a specific way to submit a form using jQuery AJAX in MVC6, still using the Auto Binding features of ASP.NET MVC. I believe in other versions of MVC you could use jquery.unobtrusive-ajax and simply use
@using (Ajax.BeginForm("SaveData", new AjaxOptions(){}
Since there have been some changes with MVC6 I am wondering what the new recommended way to do this would be besides doing a normal AJAX post to the server when the form is submitted. This meaning I would manually get the values of each input field, turn them into JSON and send them over to the controller so everything will get bound to the ViewModel.
If I use the following JavaScript for AJAX do any of the AJAX form settings even matter?
$('form').submit(function () {
$.ajax({
type: "POST",
url: "/Products/Create/",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json"
});
});
Here's a really nice YouTube tutorial on AJAX forms, and you can download the project from this GitHub link. It contain the script to be used for AJAX.
Sample style copied from the above project:
https://github.com/Behrouz-Goudarzi/AjaxTagHelper
AjaxTagHelper
A simple solution to using links and ajax forms using Tag Helper in aspnet core
First, copy the AjaxTagHelper class from the Extensions folder to your project.
Second, copy the AjaxTagHelper.js file from js folder in wwwroot and add it to your project.
Then do the following: Open the viewImports file and add the following code
To use Action Ajax, add the following code instead of the tag.
Use the following code to use AJAX to send the form to server.
Finally, add the scripts you need to view it, check the code below
Ajax works the same way, but instead of the @Ajax helper's, use the new MVC 6 Tag Helpers (don't forget to reference 'jquery' and 'jquery.unobtrusive-ajax' scripts).
JQuery Unobtrusive Ajax exists in the Asp.Net GitHub repo and can be Bower pulled.
Using the new MVC TagHelpers, you simply declare the form like the following:
To use the AjaxOptions that existed on the Ajax Helper on previous MVC versions, just add those attributes do the form tag like this:
The HTML attributes (formerly AjaxOptions) that you can use in the form are the following (original source):
Another significant change is how you check on the server side if the request is indeed an AJAX request. On previous versions we simply used
Request.IsAjaxRequest()
.On MVC6, you have to create a simple extension to add the same options that existed on previous MVC versions (original source):